﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-花痴无极限，凉粉Forever-随笔分类-JavaEE</title><link>http://www.blogjava.net/dearwolf/category/15321.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 05:57:14 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 05:57:14 GMT</pubDate><ttl>60</ttl><item><title>webservice——SOAP简单开发</title><link>http://www.blogjava.net/dearwolf/archive/2006/09/18/70294.html</link><dc:creator> 小小凉粉</dc:creator><author> 小小凉粉</author><pubDate>Mon, 18 Sep 2006 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/dearwolf/archive/2006/09/18/70294.html</guid><wfw:comment>http://www.blogjava.net/dearwolf/comments/70294.html</wfw:comment><comments>http://www.blogjava.net/dearwolf/archive/2006/09/18/70294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dearwolf/comments/commentRss/70294.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dearwolf/services/trackbacks/70294.html</trackback:ping><description><![CDATA[首先下载soap，把soap.war放到tomcat/webapp/目录下，在classpath下面加入soap.jar、mail.jar和 activation.jar，然后创建一个Service和Client，把Service.class放到 tomcat/webapp/soap/WEB-INF/classes目录下，然后把mail.jar和activation.jar放到 tomcat/webapp/soap/WEB-INF/lib下面，并写一个配置文件用于部署服务。<br /><br /><div class="HtmlCode" title="点击运行该代码！" style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;="">&lt;isd:service <br />   xmlns:isd="http://xml.apache.org/xml-soap/deployment"<br />   id="urn:service" checkMustUnderstands="true"&gt;<br />      &lt;isd:provider type="java" scope="Request" methods="setAlarm"&gt;<br />      &lt;isd:java class="work.Service" static="false"/&gt;<br />   &lt;/isd:provider&gt;<br />&lt;/isd:service&gt;</div><br /><br />上面的work.Service是类的全名，setAlarm是提供的服务名,urn:service是URI。再写一个脚本来调用配置文件部署服务<br /><br />java org.apache.soap.server.ServiceManagerClient <br />http://localhost:8080/soap/servlet/rpcrouter deploy deploy.xml<br /><br />启动Tomcat之后，启动脚本，然后执行Client代码就可以了，Client的主体代码很简单，代码里面就不加入注释了。<br />   <br />    Call call = new Call ();<br />    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);<br />    call.setTargetObjectURI ("urn:service");<br />    call.setMethodName ("setAlarm");<br />    Parameter param = new Parameter("alarm", String.class, alarm, Constants.NS_URI_SOAP_ENC);<br />    Vector paramList = new Vector();<br />    paramList.addElement(param);<br />    call.setParams (paramList);<br />    URL url = new URL ("<a href="http://localhost:8080/soap/servlet/rpcrouter">http://localhost:8080/soap/servlet/rpcrouter</a>");<br />    Response resp = call.invoke (url, "");<br />    if (!resp.generatedFault()) {<br />      // Extract Return value<br />      Parameter result = resp.getReturnValue ();<br />      String greeting = (String) result.getValue();<br />      return greeting;<br />    }<br />    else {<br />      //  Extract Fault Code and String<br />      Fault f = resp.getFault();<br />      String faultCode = f.getFaultCode();<br />      String faultString = f.getFaultString();<br />      System.err.println("Fault Occurred (details follow):");<br />      System.err.println("Fault Code:  "+faultCode);<br />      System.err.println("Fault String:  "+faultString);<br />      return new String ("Fault Occurred.  No greeting for you!");<br />    }<img src ="http://www.blogjava.net/dearwolf/aggbug/70294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dearwolf/" target="_blank"> 小小凉粉</a> 2006-09-18 15:06 <a href="http://www.blogjava.net/dearwolf/archive/2006/09/18/70294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web环境下开发quartz简易攻略</title><link>http://www.blogjava.net/dearwolf/archive/2006/09/18/70292.html</link><dc:creator> 小小凉粉</dc:creator><author> 小小凉粉</author><pubDate>Mon, 18 Sep 2006 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/dearwolf/archive/2006/09/18/70292.html</guid><wfw:comment>http://www.blogjava.net/dearwolf/comments/70292.html</wfw:comment><comments>http://www.blogjava.net/dearwolf/archive/2006/09/18/70292.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dearwolf/comments/commentRss/70292.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dearwolf/services/trackbacks/70292.html</trackback:ping><description><![CDATA[
		<p>在web环境下，Quartz可以通过配置文件来完成后台的作业调度，不必手工创建Trigger和Scheduler，其步骤如下：</p>
		<p>首先将quartz.jar,以及lib目录下面core和optional两个目录中的所有jar全都放入项目WEB-INF\lib目录下</p>
		<p>job就是一个简单的java类，这里的功能就是输出当前的时间了。</p>
		<p>import java.util.Date;</p>
		<p>import org.apache.commons.logging.Log;<br />import org.apache.commons.logging.LogFactory;<br />import org.quartz.Job;<br />import org.quartz.JobExecutionContext;<br />import org.quartz.JobExecutionException;</p>
		<p>public class Helloworld implements Job{<br /> public Helloworld() {<br /> }</p>
		<p> private static Log _log = LogFactory<br />   .getLog(Helloworld.class);</p>
		<p> public void execute(JobExecutionContext context)<br />   throws JobExecutionException {<br />  _log.info("Hello World! - " + new Date());<br /> }<br />}</p>
		<p>然后编写quartz.properties文件，这个文件的默认名称就是quartz.properties，如果启动项目的时候，Quartz没有在工程中找到该文件，就会从自己的jar包下面读取其默认的properties文件，其内容如下：</p>
		<p>org.quartz.scheduler.instanceName = TestScheduler<br />org.quartz.scheduler.instanceId = one</p>
		<p>org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool<br />org.quartz.threadPool.threadCount =  2<br />org.quartz.threadPool.threadPriority = 4</p>
		<p>org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin<br />org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}<br />org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH:mm:ss MM/dd/yyyy} with resulting trigger instruction code: {9}</p>
		<p>org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin<br />org.quartz.plugin.jobInitializer.fileName = quartz_job.xml<br />org.quartz.plugin.jobInitializer.overWriteExistingJobs = false<br />org.quartz.plugin.jobInitializer.failOnFileNotFound = true<br />org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin<br />org.quartz.plugin.shutdownhook.cleanShutdown = true</p>
		<p>上面的</p>
		<p>org.quartz.plugin.jobInitializer.fileName = quartz_job.xml</p>
		<p>是用来配置定义job文件的名称。</p>
		<p>然后编写quartz_job.xml，</p>
		<div class="HtmlCode" title="点击运行该代码！" style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;="">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;quartz&gt;<br />  &lt;job&gt;<br />    &lt;job-detail&gt;<br />      &lt;name&gt;helloworld&lt;/name&gt;<br />      &lt;group&gt;group1&lt;/group&gt;<br />      &lt;job-class&gt;Helloworld&lt;/job-class&gt;<br />    &lt;/job-detail&gt;<br />    &lt;trigger&gt;<br />      &lt;cron&gt;<br />        &lt;name&gt;test&lt;/name&gt;<br />        &lt;group&gt;group1&lt;/group&gt;<br />        &lt;job-name&gt;helloworld&lt;/job-name&gt;<br />        &lt;job-group&gt;group1&lt;/job-group&gt;<br />        &lt;cron-expression&gt;0 0/1 * * * ?&lt;/cron-expression&gt;<br />     &lt;/cron&gt;<br />    &lt;/trigger&gt;<br />  &lt;/job&gt;<br />&lt;/quartz&gt;</div>
		<p>可以看到，在配置文件中把jobdetail和trigger都作了完整的定义，并组合成一个job。下面，我们把上面两个文件都放入/WEB-INF/classes目录下，然后按照api中的说明修改一下web.xml。</p>
		<div class="HtmlCode" title="点击运行该代码！" style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;="">     &lt;servlet&gt;<br />         &lt;servlet-name&gt;<br />             QuartzInitializer<br />         &lt;/servlet-name&gt;<br />         &lt;display-name&gt;<br />             Quartz Initializer Servlet<br />         &lt;/display-name&gt;<br />         &lt;servlet-class&gt;<br />             org.quartz.ee.servlet.QuartzInitializerServlet<br />         &lt;/servlet-class&gt;<br />         &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />         &lt;init-param&gt;<br />             &lt;param-name&gt;config-file&lt;/param-name&gt;<br />             &lt;param-value&gt;/quartz.properties&lt;/param-value&gt;<br />         &lt;/init-param&gt;<br />         &lt;init-param&gt;<br />             &lt;param-name&gt;shutdown-on-unload&lt;/param-name&gt;<br />             &lt;param-value&gt;true&lt;/param-value&gt;<br />         &lt;/init-param&gt;<br />     &lt;/servlet&gt;</div>
		<p>这样，在启动Tomcat的时候，QuartzInitializerServlet这个Servlet就会自动读取quartz.properties这个配置文件，并初始化调度信息，启动Scheduler。<br />我在这里用的是Quartz1.5.0，在1.5.1中新增加了QuartzInitializerListener，但是似乎有些问题，始终启动不起来，而且更过分的是，它的api居然写错了，在&lt;listener-class&gt;这个标记中，用了 QuartzInitializerServletListener，就算把机器砸了，它也找不到这个类啊！</p>
		<p>现在就大功告成了<br />一个Job类，一个quartz.properties文件，一个quertz_job.xml文件，还有修改一下web.xml文件，很简单呀！</p>
		<p>不过看起来简单，解决的过程却很郁闷，单单是考虑如何在后台进程中运行Servlet就花了好长时间，后来查资料以后才知道可以用Listener或者是启动时运行的Servlet来完成，看来自己的底子还是不扎实的.</p>
		<p>另外就是在Tomcat出现问题的时候，居然忘了到logs下面去看日志，这个疏忽是不可原谅的！以后要牢牢记住！</p>
<img src ="http://www.blogjava.net/dearwolf/aggbug/70292.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dearwolf/" target="_blank"> 小小凉粉</a> 2006-09-18 15:05 <a href="http://www.blogjava.net/dearwolf/archive/2006/09/18/70292.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webservice——AXIS开发</title><link>http://www.blogjava.net/dearwolf/archive/2006/09/18/70293.html</link><dc:creator> 小小凉粉</dc:creator><author> 小小凉粉</author><pubDate>Mon, 18 Sep 2006 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/dearwolf/archive/2006/09/18/70293.html</guid><wfw:comment>http://www.blogjava.net/dearwolf/comments/70293.html</wfw:comment><comments>http://www.blogjava.net/dearwolf/archive/2006/09/18/70293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dearwolf/comments/commentRss/70293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dearwolf/services/trackbacks/70293.html</trackback:ping><description><![CDATA[昨天写完程序并部署Service之后，一直都在抛出接口不匹配的异常，于是我就写了个简单的接口，只传入一个String类型的参数，结果运行正常。然后我又写了个只传入Integer类型参数的接口，果不出所料，又发生了接口不匹配的异常。接下来我就开始改Client端代码：<br /><br />params.addElement(new Parameter("eventStatus",Integer.class, new Integer(1), null));<br />params.addElement(new Parameter("eventStatus",int.class, new Integer(1), null));<br />params.addElement(new Parameter("eventStatus",int.class, 1, null));<br />params.addElement(new Parameter("eventStatus",Intege.class, 1, null));<br />结果统统失败，弄的我都要抓狂了。<br /><br />今天到了公司以后，跟组长说了这件事情，组长说让我换用AXIS试试看，我到ws.apache.org/axis上面看了看文档，在user guide里面给出的例子和我的代码差别很大，我就只好按着它的例子重新改代码<br /><br />写完以后，配环境变量配的快要抓狂……部署的时候又是一头雾水……最后始终没有成功……最后回到宿舍才想到，AXIS和Apache SOAP Server不过都是服务器而已，不应该存在规范上的区别，也就是不应该会影响到客户端的程序，于是我就按照最开始的代码，把Service部署好，启动 Tomcat，从WSDL中找到对应的信息<br /><br /><div class="HtmlCode" title="点击运行该代码！" style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;="">&lt;wsdl:service name="ServiceService"&gt;<br /> &lt;wsdl:port binding="impl:serviceSoapBinding" name="service"&gt;<br />  &lt;wsdlsoap:address location="http://localhost:8080/axis/services/service" /&gt; <br /> &lt;/wsdl:port&gt;<br />&lt;/wsdl:service&gt;</div><br />在xml配置文件中，把location赋值给URL，把name赋值给TargetObjectURI，运行Client，一切OK<br />不知道是不是因为机器的问题，在公司的思路远远不如在宿舍啊<br /><br />不过今天至少让我很熟练的掌握了如何手工部署AXIS服务，创建一个wsdd文件，我把它命名为deploy.wsdd<br /><br /><div class="HtmlCode" title="点击运行该代码！" style="CURSOR: pointer" onclick="preWin=window.open('','','');preWin.document.open();preWin.document.write(this.innerText);preWin.document.close();" ;="">&lt;deployment name="lijian" xmlns="<a href="http://xml.apache.org/axis/wsdd/">http://xml.apache.org/axis/wsdd/</a>" <br />    xmlns:java="<a href="http://xml.apache.org/axis/wsdd/providers/java">http://xml.apache.org/axis/wsdd/providers/java</a>"&gt;<br />  &lt;service name="service" provider="java:RPC"&gt;<br />    &lt;parameter name="className" value="Service" /&gt;<br />    &lt;parameter name="allowedMethods" value="setAlarmInfo" /&gt;<br />  &lt;/service&gt;<br />&lt;/deployment&gt;</div><br /><br />把这个文件放到Tomcat/webapps/axis/WEB-INF/目录下，把service的类放到WEB-INF/classes/目录下，把 axis.jar;jaxrpc.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;saaj.jar 放到classpath里面，启动Tomcat之后，到webapps/axis/WEB-INF目录下运行：<br />java org.apache.axis.client.AdminClient deploy.wsdd<br />之后可以访问<br /><a href="http://localhost:8080/axis/">http://localhost:8080/axis/</a><br />来查看刚才部署的service对应的wsdl了<img src ="http://www.blogjava.net/dearwolf/aggbug/70293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dearwolf/" target="_blank"> 小小凉粉</a> 2006-09-18 15:05 <a href="http://www.blogjava.net/dearwolf/archive/2006/09/18/70293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>acegi学习笔记——1</title><link>http://www.blogjava.net/dearwolf/archive/2006/09/18/70291.html</link><dc:creator> 小小凉粉</dc:creator><author> 小小凉粉</author><pubDate>Mon, 18 Sep 2006 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/dearwolf/archive/2006/09/18/70291.html</guid><wfw:comment>http://www.blogjava.net/dearwolf/comments/70291.html</wfw:comment><comments>http://www.blogjava.net/dearwolf/archive/2006/09/18/70291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dearwolf/comments/commentRss/70291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dearwolf/services/trackbacks/70291.html</trackback:ping><description><![CDATA[
		<p>在验证用户登录的时候，各个类调用的顺序如下所示：</p>
		<p>authenticationProcessionFilter(AuthenticationProcessingFilter)----&gt;</p>
		<p>authenticationManager(ProviderManger)----&gt;</p>
		<p>daoAuthenticationProvider(DaoAuthenticationProvider)----&gt;</p>
		<p>userDetailsService(UserDetailsService)</p>
		<p>在最底层的UserDetailsService接口中，提供了loadUserByUsername这个方法，我们只需要实现这个接口，并实现接口中的方法，就可以使用自己的验证功能了。该方法传入的参数是String username，返回类型是UserDetails，很显然，我们需要通过自己的dao，根据username来得到自定义的user类型，然后把它封装到UserDetails里面去，然后返回。</p>
		<p>另外，在UserDetail这个类里面，有一个GrantedAuthority[] 类型的属性，用来存放该用户所对应的权限，我们在loadUserByUsername这个方法里面，同样也需要得到该用户的权限，并把它赋给返回的UserDetails。</p>
		<p>假如用户对应的类名为UserInfo，权限对应的类名为Roles，在UserInfo中有一个变量</p>
		<p>private Set roles;</p>
		<p>在得到权限信息的时候，因为它是集合，所以可以使用延迟加载功能，读取的时候先从缓存中取数据，如果取不到的话，就调用UserInfo.getRoles()方法，这个时候就会到数据库中取数据了，取到以后，再把数据放到缓存中。</p>
<img src ="http://www.blogjava.net/dearwolf/aggbug/70291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dearwolf/" target="_blank"> 小小凉粉</a> 2006-09-18 15:04 <a href="http://www.blogjava.net/dearwolf/archive/2006/09/18/70291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webservice——基本概念</title><link>http://www.blogjava.net/dearwolf/archive/2006/09/18/70290.html</link><dc:creator> 小小凉粉</dc:creator><author> 小小凉粉</author><pubDate>Mon, 18 Sep 2006 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/dearwolf/archive/2006/09/18/70290.html</guid><wfw:comment>http://www.blogjava.net/dearwolf/comments/70290.html</wfw:comment><comments>http://www.blogjava.net/dearwolf/archive/2006/09/18/70290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dearwolf/comments/commentRss/70290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dearwolf/services/trackbacks/70290.html</trackback:ping><description><![CDATA[
		<p style="MARGIN: auto 0cm">
				<span lang="EN-US" style="FONT-FAMILY: Arial">
						<font face="Comic Sans MS">
								<font size="3">1. SOAP--Simple Object Access Protocal<?xml:namespace prefix = o /?><o:p></o:p></font>
						</font>
				</span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">SOAP is a lightweight protocol intented to exchanging structured information in a decentralized, distributed environment.The two major goals for SOAP is simplicity and extensibility.<o:p></o:p></span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">SOAP is widely used for XML messaging as it :<o:p></o:p></span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">    defines thin layer on top of widely understood HTTP <br />    is flexible and extensible <br />    enjoys broad industry and developer community support <o:p></o:p></span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">Main uses of SOAP are for <o:p></o:p></span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">    messaging: sending XML data orders, invoices, forms <br />    RPC: invoking services querying data sources, transacting<o:p></o:p></span>
		</p>
		<p style="MARGIN: auto 0cm">
				<span lang="EN-US" style="FONT-FAMILY: Arial">
						<font face="Comic Sans MS">
								<font size="3">2. WSDL--Web Service Definition Language<o:p></o:p></font>
						</font>
				</span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">As the communication protocols and message formats are standardized in the web community, it becomes increasingly possible and important to be able to describe the communication s in some structured way.WSDL addresses this need by defining an XML grammar for describing network services as collections of communication endpoints capable of exchanging messages.<o:p></o:p></span>
		</p>
		<p style="MARGIN: auto 0cm">
				<span lang="EN-US" style="FONT-FAMILY: Arial">
						<font face="Comic Sans MS" size="3">3.  UDDI-- Universal Description, Discovery, and Integration</font>
						<o:p>
						</o:p>
				</span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">UDDI protocol is a central element of the group of related standards that comprise the Web services stack. The specification defines a standard method for publishing and discovering the network-based software components of a service-oriented architecture.<o:p></o:p></span>
		</p>
		<p style="MARGIN: auto 0cm">
				<font size="3">
						<font face="Comic Sans MS">
								<span lang="EN-US" style="FONT-FAMILY: Arial">
										<font face="Comic Sans MS">4.  the relationship between SOAP</font>,<font face="Comic Sans MS">WSDL and UDDI</font></span>
						</font>
				</font>
				<span lang="EN-US" style="FONT-FAMILY: Arial">
						<o:p>
						</o:p>
				</span>
		</p>
		<p>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">web service client</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">需要定位另一个应用程序或者是网络上的某一段业务逻辑，</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">client</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">通过</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">name</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">、</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">catagory</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">、</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">identifier</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">或者</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">specification</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">来从</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">UDDI registry</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">中查询服务，定位以后，</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">client</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">从</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">UDDI registry</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">中得到</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">WSDL</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">文档的位置信息。在</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">WSDL</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">文档的</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">XML schema</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">中包含了如何访问</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">web service</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">和请求信息的格式，</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">client</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">按照</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">xml schema</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">的格式来创建一个</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">soap</span>
				<span style="FONT-SIZE: 10.5pt">
						<font face="宋体">消息，并向</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: Arial">host</span>
				<font face="宋体">
						<span style="FONT-SIZE: 10.5pt">发送请求。</span>
				</font>
		</p>
<img src ="http://www.blogjava.net/dearwolf/aggbug/70290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dearwolf/" target="_blank"> 小小凉粉</a> 2006-09-18 15:03 <a href="http://www.blogjava.net/dearwolf/archive/2006/09/18/70290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web中使用普通类得到applicationContext</title><link>http://www.blogjava.net/dearwolf/archive/2006/09/18/70287.html</link><dc:creator> 小小凉粉</dc:creator><author> 小小凉粉</author><pubDate>Mon, 18 Sep 2006 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/dearwolf/archive/2006/09/18/70287.html</guid><wfw:comment>http://www.blogjava.net/dearwolf/comments/70287.html</wfw:comment><comments>http://www.blogjava.net/dearwolf/archive/2006/09/18/70287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dearwolf/comments/commentRss/70287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dearwolf/services/trackbacks/70287.html</trackback:ping><description><![CDATA[用一个类来存放applicationContext： <br />public class ContextHolder { <br />  private final static ContextHolder instance = new ContextHolder(); <br />  private ApplicationContext ac; <br />  private ContextHolder() { <br />  } <br />  public static ContextHolder getInstance() { <br />    return instance; <br />  } <br />  public synchronized void setApplicationContext(ApplicationContext ac) { <br />    this.ac = ac; <br />  } <br />  public ApplicationContext getApplicationContext() { <br />    return ac; <br />  }  <br />} <br /><br />然后写一个servlet，继承自org.springframework.web.context.ContextLoaderServlet，并配置web.xml，让它在tomcat启动时自动运行。然后在它的init方法中，加入如下的代码： <br />WebApplicationContext context = WebApplicationContextUtils. <br />    getWebApplicationContext(this.getServletContext()); <br />ContextHolder.getInstance().setApplicationContext(context);<img src ="http://www.blogjava.net/dearwolf/aggbug/70287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dearwolf/" target="_blank"> 小小凉粉</a> 2006-09-18 14:57 <a href="http://www.blogjava.net/dearwolf/archive/2006/09/18/70287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>