﻿<?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-雪山飞鹄-随笔分类-webservice</title><link>http://www.blogjava.net/sxyx2008/category/45653.html</link><description>温馨提示：您的每一次转载,体现了我写此文的意义!!!烦请您在转载时注明出处http://www.blogjava.net/sxyx2008/谢谢合作!!!
</description><language>zh-cn</language><lastBuildDate>Tue, 02 Apr 2013 13:23:24 GMT</lastBuildDate><pubDate>Tue, 02 Apr 2013 13:23:24 GMT</pubDate><ttl>60</ttl><item><title>基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、DWR)</title><link>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Tue, 25 Sep 2012 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/388490.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/388490.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/388490.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">该项目基于maven3.0构建的，项目中融合了Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、Spring JDBC、Spring DWR。页面展现这里使用Struts1、Struts2、SpringMVC（jsp视图、velocity视图、freemarker视图、pdf视图、excel视图、xml视图、json视图等）。是一个综合性行的项目。该项目后期会陆续集成Spring的一些好的框架进来比如说Spring Web Flow、Spring Security 、Jbpm、WebService、Compass、Solr、nutch等。总之是一个综合性的项目。该项目不处理业务，主要是把目前自己工作中用到过的各种框架糅合到一个项目中。纯粹是一个jee框架的糅合，主要是介绍各种技术。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">介绍下目前使用的各个框架的版本信息</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Struts1 1.3.10</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Struts2 2.3.8</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Spring 3.2.0.RELEASE</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Hibernate 4.2.0.Final</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Ibatis 2.3.4.726</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">MyBatis 3.1.1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Spring Data JPA 1.3.0.RELEASE</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">DWR 3.0.M1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">项目中的持久化框架sql语句的跟踪采用了log4jdbc4结合log4j，在控制台可以看到完整的sql语句。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">该项目中使用到的技术均与Spring已集成。除了DWR与Spring集成使用xml文件中配置bean外 其他的bean均使用注解完善。每一个与数据库有关的都有事务处理。</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">项目结构图</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><img style="border-bottom: medium none; border-left: medium none; border-top: medium none; border-right: medium none" alt="" src="https://maven-framework-project.googlecode.com/files/project-map.jpg" /><br />
</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="orphans: auto; widows: auto;">项目托管SVN地址：</span><a href="http://maven-framework-project.googlecode.com/svn/trunk/" style="color: #ca0000; text-decoration: none; orphans: auto; widows: auto;">http://maven-framework-project.googlecode.com/svn/trunk/</a>&nbsp;<span style="orphans: auto; widows: auto; color: #ff0000;">(限于大陆google code 不稳定,导致经常无法访问,该地址已不在同步,建议使用github地址)</span><br style="orphans: auto; widows: auto;" />
<span style="orphans: auto; widows: auto;">项目托管GitHub地址：</span><a href="https://github.com/sxyx2008/maven-framework-project/" style="color: #ca0000; text-decoration: none; orphans: auto; widows: auto;">https://github.com/sxyx2008/maven-framework-project/</a><span style="orphans: auto; widows: auto; color: #ff0000;">（推荐使用）</span><br />
</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">最后希望有兴趣的朋友可以加入进来，大家一起完善他。把自己的技术分享出来。如有任何问题可以与我联系</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">联系方式</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">QQ：184675420</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: #ffffff; text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/26px Arial; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">Email：sxyx2008@gmail.com</p><img src ="http://www.blogjava.net/sxyx2008/aggbug/388490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2012-09-25 11:40 <a href="http://www.blogjava.net/sxyx2008/archive/2012/09/25/388490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xfire集成spring发布webservice</title><link>http://www.blogjava.net/sxyx2008/archive/2011/06/15/352330.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 15 Jun 2011 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2011/06/15/352330.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/352330.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2011/06/15/352330.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/352330.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/352330.html</trackback:ping><description><![CDATA[在web.xml里配置 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xfire</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.springframework.web.servlet.DispatcherServlet<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xfire</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">*.ws</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span></div>在spring配置文件中加入以下
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="xfire.annotationServiceFactory"</span><span style="color: #ff0000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff">="org.codehaus.xfire.annotations.AnnotationServiceFactory"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="xfire.commonsAnnotations"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">constructor-arg</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="xfire.transportManager"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">constructor-arg</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">constructor-arg&nbsp;</span><span style="color: #ff0000">index</span><span style="color: #0000ff">="2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="xfire.aegisBindingProvider"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">constructor-arg</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="xfire.commonsAnnotations"</span><span style="color: #ff0000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff">="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="urlMap"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">entry&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="/SynchronizService.ws"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">ref&nbsp;</span><span style="color: #ff0000">bean</span><span style="color: #0000ff">="synchronizservice"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">entry</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">map</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="synchronizservice"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="org.codehaus.xfire.spring.remoting.XFireExporter"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="serviceBean"</span><span style="color: #ff0000">&nbsp;ref</span><span style="color: #0000ff">="synchronizserviceBean"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="serviceClass"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.futuresoftware.webservices.SynchronizService</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">value</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="serviceFactory"</span><span style="color: #ff0000">&nbsp;ref</span><span style="color: #0000ff">="xfire.annotationServiceFactory"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">bean</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="synchronizserviceBean"</span><span style="color: #ff0000">&nbsp;class</span><span style="color: #0000ff">="com.futuresoftware.webservices.SynchronizServiceImpl"</span><span style="color: #0000ff">/&gt;</span></div><br />以上是基于注解方式的配置具体配置可参考<br /><a href="http://xfire.codehaus.org/Advanced+Configuration">http://xfire.codehaus.org/Advanced+Configuration</a><br /><br /><img src ="http://www.blogjava.net/sxyx2008/aggbug/352330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2011-06-15 10:03 <a href="http://www.blogjava.net/sxyx2008/archive/2011/06/15/352330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用CXF发布和调用webservice之HelloWorld入门</title><link>http://www.blogjava.net/sxyx2008/archive/2010/09/15/332058.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 15 Sep 2010 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/09/15/332058.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/332058.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/09/15/332058.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/332058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/332058.html</trackback:ping><description><![CDATA[<p>依赖的JAR<br />
&nbsp;&nbsp;&nbsp;&nbsp;cxf-2.2.10.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;jetty-6.1.21.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;jetty-util-6.1.21.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;servlet-2_5-api.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;wsdl4j-1.6.2.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;XmlSchema-1.4.5.jar<br />
创建一个普通的Java工程即可</p>
创建webservice接口<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.interfaces;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.jws.WebParam;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.jws.WebService;<br />
<br />
@WebService<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;HelloWorldServiceInf&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sayHello(@WebParam(name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">username</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;String&nbsp;username);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></div>
发布和调用webservice<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;方法一<br />
发布webservice<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.impl;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.jws.WebService;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.interceptor.LoggingInInterceptor;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.interceptor.LoggingOutInterceptor;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.jaxws.JaxWsServerFactoryBean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.interfaces.HelloWorldServiceInf;<br />
<br />
@WebService(endpointInterface</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.cxf.interfaces.HelloWorldServiceInf</span><span style="color: #000000">"</span><span style="color: #000000">,serviceName</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">helloWorldService</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Server&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;HelloWorldServiceInf&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;sayHello(String&nbsp;username)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello,</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server&nbsp;impl</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Server();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JaxWsServerFactoryBean&nbsp;factoryBean</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JaxWsServerFactoryBean();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setAddress(</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:9000/hello</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setServiceClass(HelloWorldServiceInf.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setServiceBean(impl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.getInInterceptors().add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;LoggingInInterceptor());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.getOutInterceptors().add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;LoggingOutInterceptor());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
wsdl描述文件<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:definitions&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldServiceInfService"</span><span style="color: #ff0000">&nbsp;targetNamespace</span><span style="color: #0000ff">="http://interfaces.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:ns1</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/http"</span><span style="color: #ff0000">&nbsp;xmlns:soap</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/"</span><span style="color: #ff0000">&nbsp;xmlns:tns</span><span style="color: #0000ff">="http://interfaces.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:wsdl</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/"</span><span style="color: #ff0000">&nbsp;xmlns:xsd</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:types</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:schema&nbsp;</span><span style="color: #ff0000">attributeFormDefault</span><span style="color: #0000ff">="unqualified"</span><span style="color: #ff0000">&nbsp;elementFormDefault</span><span style="color: #0000ff">="unqualified"</span><span style="color: #ff0000">&nbsp;targetNamespace</span><span style="color: #0000ff">="http://interfaces.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:tns</span><span style="color: #0000ff">="http://interfaces.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:xsd</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="tns:sayHello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:complexType&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">minOccurs</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="username"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="xsd:string"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:complexType</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="tns:sayHelloResponse"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:complexType&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">minOccurs</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="return"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="xsd:string"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:complexType</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:schema</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:types</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:message&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:part&nbsp;</span><span style="color: #ff0000">element</span><span style="color: #0000ff">="tns:sayHelloResponse"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="parameters"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:message</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:message&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:part&nbsp;</span><span style="color: #ff0000">element</span><span style="color: #0000ff">="tns:sayHello"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="parameters"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:message</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:portType&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldServiceInf"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:operation&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:input&nbsp;</span><span style="color: #ff0000">message</span><span style="color: #0000ff">="tns:sayHello"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:output&nbsp;</span><span style="color: #ff0000">message</span><span style="color: #0000ff">="tns:sayHelloResponse"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:operation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:portType</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:binding&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldServiceInfServiceSoapBinding"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="tns:HelloWorldServiceInf"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:binding&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="document"</span><span style="color: #ff0000">&nbsp;transport</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/soap/http"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:operation&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:operation&nbsp;</span><span style="color: #ff0000">soapAction</span><span style="color: #0000ff">=""</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="document"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:input&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:body&nbsp;</span><span style="color: #ff0000">use</span><span style="color: #0000ff">="literal"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:input</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:output&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:body&nbsp;</span><span style="color: #ff0000">use</span><span style="color: #0000ff">="literal"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:output</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:operation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:binding</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:service&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldServiceInfService"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:port&nbsp;</span><span style="color: #ff0000">binding</span><span style="color: #0000ff">="tns:HelloWorldServiceInfServiceSoapBinding"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="HelloWorldServiceInfPort"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:address&nbsp;</span><span style="color: #ff0000">location</span><span style="color: #0000ff">="http://localhost:9000/hello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:port</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:service</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:definitions</span><span style="color: #0000ff">&gt;</span></div>
客户端调用<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.client;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.interceptor.LoggingInInterceptor;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.interceptor.LoggingOutInterceptor;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.jaxws.JaxWsProxyFactoryBean;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.interfaces.HelloWorldServiceInf;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Client&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JaxWsProxyFactoryBean&nbsp;&nbsp;factoryBean</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;JaxWsProxyFactoryBean();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.getInInterceptors().add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;LoggingInInterceptor());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.getOutInterceptors().add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;LoggingOutInterceptor());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setServiceClass(HelloWorldServiceInf.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setAddress(</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:9000/hello</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloWorldServiceInf&nbsp;impl</span><span style="color: #000000">=</span><span style="color: #000000">(HelloWorldServiceInf)&nbsp;factoryBean.create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(impl.sayHello(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;方法二<br />
发布webservice<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.impl;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.jws.WebService;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.ws.Endpoint;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.interfaces.HelloWorldServiceInf;<br />
<br />
@WebService(endpointInterface</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.cxf.interfaces.HelloWorldServiceInf</span><span style="color: #000000">"</span><span style="color: #000000">,serviceName</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">helloWorldService</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Server&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;HelloWorldServiceInf&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;sayHello(String&nbsp;username)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello,</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server&nbsp;impl</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Server();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;address</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:9000/hello</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Endpoint.publish(address,&nbsp;impl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
wsdl文件<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:definitions&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="helloWorldService"</span><span style="color: #ff0000">&nbsp;targetNamespace</span><span style="color: #0000ff">="http://impl.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:ns1</span><span style="color: #0000ff">="http://interfaces.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:ns2</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/http"</span><span style="color: #ff0000">&nbsp;xmlns:soap</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/"</span><span style="color: #ff0000">&nbsp;xmlns:tns</span><span style="color: #0000ff">="http://impl.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:wsdl</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/"</span><span style="color: #ff0000">&nbsp;xmlns:xsd</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:import&nbsp;</span><span style="color: #ff0000">location</span><span style="color: #0000ff">="http://localhost:9000/hello?wsdl=HelloWorldServiceInf.wsdl"</span><span style="color: #ff0000">&nbsp;namespace</span><span style="color: #0000ff">="http://interfaces.cxf.com/"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:binding&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="helloWorldServiceSoapBinding"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="ns1:HelloWorldServiceInf"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:binding&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="document"</span><span style="color: #ff0000">&nbsp;transport</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/soap/http"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:operation&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:operation&nbsp;</span><span style="color: #ff0000">soapAction</span><span style="color: #0000ff">=""</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="document"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:input&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:body&nbsp;</span><span style="color: #ff0000">use</span><span style="color: #0000ff">="literal"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:input</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:output&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:body&nbsp;</span><span style="color: #ff0000">use</span><span style="color: #0000ff">="literal"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:output</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:operation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:binding</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:service&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="helloWorldService"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:port&nbsp;</span><span style="color: #ff0000">binding</span><span style="color: #0000ff">="tns:helloWorldServiceSoapBinding"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="ServerPort"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:address&nbsp;</span><span style="color: #ff0000">location</span><span style="color: #0000ff">="http://localhost:9000/hello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:port</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:service</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:definitions</span><span style="color: #0000ff">&gt;</span></div>
客户端调用<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.client;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.namespace.QName;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.ws.Service;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.ws.soap.SOAPBinding;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.interfaces.HelloWorldServiceInf;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Client&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">注意：此处http:</span><span style="color: #008000">//</span><span style="color: #008000">interfaces.cxf.com/&nbsp;&nbsp;来源于wsdl文件中namespace&nbsp;&nbsp;&nbsp;&lt;wsdl:import&nbsp;location="</span><span style="color: #008000; text-decoration: underline">http://localhost</span><span style="color: #008000">:9000/hello?wsdl=HelloWorldServiceInf.wsdl"&nbsp;namespace="</span><span style="color: #008000; text-decoration: underline">http://interfaces.cxf.com/</span><span style="color: #008000">"&nbsp;/&gt;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;QName&nbsp;SERVICE_NAME</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QName(</span><span style="color: #000000">"</span><span style="color: #000000">http://interfaces.cxf.com/</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">HelloWorldServiceInf</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">HelloWorldServiceInf接口类的名称</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;QName&nbsp;PORT_NAME</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;QName(</span><span style="color: #000000">"</span><span style="color: #000000">http://interfaces.cxf.com/</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">HelloWorldServiceInfPort</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">HelloWorldServiceInfPort&nbsp;接口类的名称+Port</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;endPointAddress</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:9000/hello</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Service&nbsp;service</span><span style="color: #000000">=</span><span style="color: #000000">Service.create(SERVICE_NAME);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;service.addPort(PORT_NAME,&nbsp;SOAPBinding.SOAP11HTTP_BINDING,&nbsp;endPointAddress);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloWorldServiceInf&nbsp;inf</span><span style="color: #000000">=</span><span style="color: #000000">service.getPort(HelloWorldServiceInf.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(inf.sayHello(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
CXF根据wsdl文件动态调用WebService<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.client;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ClientFromWsdl&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JaxWsDynamicClientFactory&nbsp;dcf&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;JaxWsDynamicClientFactory.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.apache.cxf.endpoint.Client&nbsp;client&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dcf.createClient(</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:9000/hello?wsdl</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">sayHello&nbsp;为接口中定义的方法名称&nbsp;&nbsp;&nbsp;张三为传递的参数&nbsp;&nbsp;&nbsp;返回一个Object数组</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;objects</span><span style="color: #000000">=</span><span style="color: #000000">client.invoke(</span><span style="color: #000000">"</span><span style="color: #000000">sayHello</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">输出调用结果</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(objects[</span><span style="color: #000000">0</span><span style="color: #000000">].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<a title="下载工程代码" href="http://struts2typeconverter.googlecode.com/files/cxf-webservice.zip">下载工程代码</a> 
<img src ="http://www.blogjava.net/sxyx2008/aggbug/332058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-09-15 11:18 <a href="http://www.blogjava.net/sxyx2008/archive/2010/09/15/332058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache之CXF HelloWorld入门</title><link>http://www.blogjava.net/sxyx2008/archive/2010/09/10/331613.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Fri, 10 Sep 2010 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/09/10/331613.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/331613.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/09/10/331613.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/331613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/331613.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最近由于项目需要，一直在学习OSGI，在学习OSGI的这段时间内，不断的接触到apache的一些优秀的开源项目，比如说<a title="OSGi Framework and components." href="http://felix.apache.org/">Felix</a>、<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>等。<a title="OSGi Framework and components." href="http://felix.apache.org/">Felix</a>是Apache对OSGI R4规范的一个轻量级实现。你使用eclipse创建的plugin(插件)工程都是可以正常运行在<a title="OSGi Framework and components." href="http://felix.apache.org/">Felix</a>中的。前提是你创建bundle的时候选择标准选项这一栏。好了本篇文章主要是用来介绍<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>的，关于<a title="OSGi Framework and components." href="http://felix.apache.org/">Felix</a>就不再深入讨论了，有兴趣的可以自行去研究下。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>，不做过多的解释。官方的解释已经够清楚了。相信大家之前在Java环境下创建webservice程序大多数选择的是xfire这个框架吧。后来好多专家不再推荐这个东东。都建议使用<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>。在未接触到<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>之前，本人一向喜欢用xfire这个框架来创建自己的webservice。还了，废话不多说，先来看个HelloWorld的程序，教大家快速上手。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先去Apache网站下载<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>所需要的jar，我本人下载是<a class="external-link" href="http://www.apache.org/dyn/closer.cgi?path=%2Fcxf%2F2.2.10%2Fapache-cxf-2.2.10.zip" rel="nofollow">apache-cxf-2.2.10.zip</a>这个包。这里为了方便期间创建一个java工程。啊？java工程，这有点不可思议了，不是要创建webservice吗？怎么是java工程？呵呵，这里就是<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>的神奇之处!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加必须的jar到你的classpath路径下。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cxf-2.2.10.jar&nbsp;核心jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jetty-6.1.21.jar 用来启动jetty服务器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jetty-util-6.1.21.jar jetty辅助工具<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wsdl4j-1.6.2.jar wsdl支持工具<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlSchema-1.4.5.jar&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这就是<a title="Service Framework" href="http://cxf.apache.org/">CXF</a>的最小配置，以上jar包缺一不可<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建一个接口<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.service;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;HelloWorldCxfService&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sayHello(String&nbsp;username);<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建该接口的实现类<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.service;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HelloWorldCxfServiceImpl&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;HelloWorldCxfService&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;sayHello(String&nbsp;username)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello,</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;发布webservice<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.server;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.frontend.ServerFactoryBean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.service.HelloWorldCxfService;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.service.HelloWorldCxfServiceImpl;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Server&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloWorldCxfServiceImpl&nbsp;worldCxfServiceImpl</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HelloWorldCxfServiceImpl();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerFactoryBean&nbsp;factoryBean</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ServerFactoryBean();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setAddress(</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:8080/hello</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setServiceClass(HelloWorldCxfService.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setServiceBean(worldCxfServiceImpl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;运行Server，注意不要关闭，在控制台会打印如下信息：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">2010-9-10&nbsp;9:44:16&nbsp;org.apache.cxf.service.factory.ReflectionServiceFactoryBean&nbsp;buildServiceFromClass<br />
信息:&nbsp;Creating&nbsp;Service&nbsp;{http://service.cxf.com/}HelloWorldCxfService&nbsp;from&nbsp;class&nbsp;com.cxf.service.HelloWorldCxfService<br />
2010-9-10&nbsp;9:44:16&nbsp;org.apache.cxf.endpoint.ServerImpl&nbsp;initDestination<br />
信息:&nbsp;Setting&nbsp;the&nbsp;server's&nbsp;publish&nbsp;address&nbsp;to&nbsp;be&nbsp;http://localhost:8080/hello<br />
2010-09-10&nbsp;09:44:16.296::INFO:&nbsp;&nbsp;Logging&nbsp;to&nbsp;STDERR&nbsp;via&nbsp;org.mortbay.log.StdErrLog<br />
2010-09-10&nbsp;09:44:16.296::INFO:&nbsp;&nbsp;jetty-6.1.21<br />
2010-09-10&nbsp;09:44:16.390::INFO:&nbsp;&nbsp;Started&nbsp;SelectChannelConnector@localhost:8080<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客户端调用<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.cxf.server;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.cxf.frontend.ClientProxyFactoryBean;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.cxf.service.HelloWorldCxfService;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Client&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClientProxyFactoryBean&nbsp;factoryBean</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ClientProxyFactoryBean();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setAddress(</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:8080/hello</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factoryBean.setServiceClass(HelloWorldCxfService.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloWorldCxfService&nbsp;worldCxfService</span><span style="color: #000000">=</span><span style="color: #000000">(HelloWorldCxfService)&nbsp;factoryBean.create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(worldCxfService.sayHello(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;运行Client代码，控制台打印如下信息：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">2010-9-10&nbsp;9:46:58&nbsp;org.apache.cxf.service.factory.ReflectionServiceFactoryBean&nbsp;buildServiceFromClass<br />
信息:&nbsp;Creating&nbsp;Service&nbsp;{http://service.cxf.com/}HelloWorldCxfService&nbsp;from&nbsp;class&nbsp;com.cxf.service.HelloWorldCxfService<br />
Hello,张三<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;到此，我们的webservice，已经成功调用了。大家是不是迫不及待的想看下wsdl文件是啥样的呢？<br />
在浏览器中输入<a href="http://localhost:8080/hello?wsdl">http://localhost:8080/hello?wsdl</a>，即可看到wsdl文件了。其中<a href="http://localhost:8080/hello?wsdl">http://localhost:8080/hello</a>部分为代码里指定的Address。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wsdl文件信息：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:definitions&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldCxfService"</span><span style="color: #ff0000">&nbsp;targetNamespace</span><span style="color: #0000ff">="http://service.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:ns1</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/http"</span><span style="color: #ff0000">&nbsp;xmlns:soap</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/soap/"</span><span style="color: #ff0000">&nbsp;xmlns:tns</span><span style="color: #0000ff">="http://service.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:wsdl</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/wsdl/"</span><span style="color: #ff0000">&nbsp;xmlns:xsd</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:types</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:schema&nbsp;</span><span style="color: #ff0000">attributeFormDefault</span><span style="color: #0000ff">="unqualified"</span><span style="color: #ff0000">&nbsp;elementFormDefault</span><span style="color: #0000ff">="qualified"</span><span style="color: #ff0000">&nbsp;targetNamespace</span><span style="color: #0000ff">="http://service.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:tns</span><span style="color: #0000ff">="http://service.cxf.com/"</span><span style="color: #ff0000">&nbsp;xmlns:xsd</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="tns:sayHello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:complexType&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">minOccurs</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="arg0"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="xsd:string"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:complexType</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="tns:sayHelloResponse"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:complexType&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsd:element&nbsp;</span><span style="color: #ff0000">minOccurs</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="return"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="xsd:string"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:sequence</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:complexType</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsd:schema</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:types</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:message&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:part&nbsp;</span><span style="color: #ff0000">element</span><span style="color: #0000ff">="tns:sayHelloResponse"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="parameters"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:message</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:message&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:part&nbsp;</span><span style="color: #ff0000">element</span><span style="color: #0000ff">="tns:sayHello"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="parameters"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:message</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:portType&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldCxfServicePortType"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:operation&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:input&nbsp;</span><span style="color: #ff0000">message</span><span style="color: #0000ff">="tns:sayHello"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:output&nbsp;</span><span style="color: #ff0000">message</span><span style="color: #0000ff">="tns:sayHelloResponse"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:operation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:portType</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:binding&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldCxfServiceSoapBinding"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="tns:HelloWorldCxfServicePortType"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:binding&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="document"</span><span style="color: #ff0000">&nbsp;transport</span><span style="color: #0000ff">="http://schemas.xmlsoap.org/soap/http"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:operation&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:operation&nbsp;</span><span style="color: #ff0000">soapAction</span><span style="color: #0000ff">=""</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="document"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:input&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHello"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:body&nbsp;</span><span style="color: #ff0000">use</span><span style="color: #0000ff">="literal"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:input</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:output&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="sayHelloResponse"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:body&nbsp;</span><span style="color: #ff0000">use</span><span style="color: #0000ff">="literal"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:output</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:operation</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:binding</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:service&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="HelloWorldCxfService"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
-&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">wsdl:port&nbsp;</span><span style="color: #ff0000">binding</span><span style="color: #0000ff">="tns:HelloWorldCxfServiceSoapBinding"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="HelloWorldCxfServicePort"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">soap:address&nbsp;</span><span style="color: #ff0000">location</span><span style="color: #0000ff">="http://localhost:8080/hello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:port</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:service</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">wsdl:definitions</span><span style="color: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/sxyx2008/aggbug/331613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-09-10 09:51 <a href="http://www.blogjava.net/sxyx2008/archive/2010/09/10/331613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hessian一个轻量级的remoting on http工具</title><link>http://www.blogjava.net/sxyx2008/archive/2010/09/01/330493.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 01 Sep 2010 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/09/01/330493.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/330493.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/09/01/330493.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/330493.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/330493.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;baidu百科这样介绍它：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hessian是一个轻量级的remoting on http工具，使用简单的方法提供了RMI的功能. 相比WebService，Hessian更简单、快捷。采用的是二进制RPC协议，因为采用的是二进制协议，所以它很适合于发送二进制数据.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;开元百科这样介绍它：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hessian是Caucho开发的一种二进制Web Service协议。采取Apache许可协议.&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments. <br />
Hessian是一个精心打造的Web Service实现，它支持Java、C#、Ruby、PHP和Python，又新增了ActionScript。使用Adobe Flash和Flex的RIA开发者们在需要集成业务服务的时候，Hessian应该是一个不错的选择。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;既然都它这么神奇，那么我们就又要去认识下这位新朋友。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项目主页：<a href="http://hessian.caucho.com/">http://hessian.caucho.com/</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;建议大家仔细认真阅读下官方网站。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还是先从helloworld着手。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;它只需要一个jar包即可<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;去官方下载适用于java环境下的jar包支持<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a title="hessian-4.0.7.jar" href="http://caucho.com/download/hessian-4.0.7.jar">hessian-4.0.7.jar</a>&nbsp;&nbsp; <a title="hessian-4.0.7-src.jar" href="http://caucho.com/download/hessian-4.0.7-src.jar">hessian-4.0.7-src.jar</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建web工程。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编写接口：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.hessian.demo.inf;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;HelloWorld&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;sayHelloWorld(String&nbsp;name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编写实现类：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.hessian.demo.impl;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.hessian.demo.inf.HelloWorld;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HelloWorldImpl&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;HelloWorld&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;sayHelloWorld(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Hello&nbsp;,</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">name</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">Welcome&nbsp;to&nbsp;use&nbsp;hessian&nbsp;!&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置web.xml<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">web-app&nbsp;</span><span style="color: #ff0000">version</span><span style="color: #0000ff">="2.5"</span><span style="color: #ff0000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee"</span><span style="color: #ff0000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">helloworld</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.caucho.hessian.server.HessianServlet</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;此处hom-api为固定写法,为HessianServlet中定义的参数详细可参考HessianServlet&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;其值为接口的类长名即&nbsp;包名+类名&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">home-api</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.hessian.demo.inf.HelloWorld</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;此处hom-class为固定写法,为HessianServlet中定义的参数详细可参考HessianServlet&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;其值为实现类的类长名即&nbsp;包名+类名&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">home-class</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.hessian.demo.impl.HelloWorldImpl</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">helloworld</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/helloworld</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">web-app</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此处web.xml中配置的初始化参数具体可参考HessianServlet的init()方法<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(ServletConfig&nbsp;config)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">.init(config);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_homeImpl&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">home-class</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">home-class</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;homeClass&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;loadClass(className);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeImpl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;homeClass.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;init(_homeImpl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">service-class</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">service-class</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;homeClass&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;loadClass(className);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeImpl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;homeClass.newInstance();<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;init(_homeImpl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getClass().equals(HessianServlet.</span><span style="color: #0000ff">class</span><span style="color: #000000">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ServletException(</span><span style="color: #000000">"</span><span style="color: #000000">server&nbsp;must&nbsp;extend&nbsp;HessianServlet</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeImpl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_homeAPI&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">home-api</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">home-api</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeAPI&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;loadClass(className);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">api-class</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">api-class</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeAPI&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;loadClass(className);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_homeImpl&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeAPI&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;findRemoteAPI(_homeImpl.getClass());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_homeAPI&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_homeAPI&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_homeImpl.getClass();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_objectImpl&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">object-class</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">object-class</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;objectClass&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;loadClass(className);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;_objectImpl&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;objectClass.newInstance();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;init(_objectImpl);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_objectAPI&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">object-api</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">object-api</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;_objectAPI&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;loadClass(className);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_objectImpl&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;_objectAPI&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_objectImpl.getClass();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_homeSkeleton&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HessianSkeleton(_homeImpl,&nbsp;_homeAPI);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_objectAPI&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;_homeSkeleton.setObjectClass(_objectAPI);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_objectImpl&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;_objectSkeleton&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HessianSkeleton(_objectImpl,&nbsp;_objectAPI);<br />
&nbsp;&nbsp;&nbsp;&nbsp;_objectSkeleton.setHomeClass(_homeAPI);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;_objectSkeleton&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_homeSkeleton;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">"</span><span style="color: #000000">true</span><span style="color: #000000">"</span><span style="color: #000000">.equals(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">debug</span><span style="color: #000000">"</span><span style="color: #000000">)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;_isDebug&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">"</span><span style="color: #000000">false</span><span style="color: #000000">"</span><span style="color: #000000">.equals(getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">send-collection-type</span><span style="color: #000000">"</span><span style="color: #000000">)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;setSendCollectionType(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(ServletException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;e;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ServletException(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编写客户端测试代码：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.hessian.demo.client;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.caucho.hessian.client.HessianProxyFactory;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.hessian.demo.inf.HelloWorld;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HelloWorldClient&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">servlet的访问路径</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;url</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://localhost:8080/hessian/helloworld</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建一HessianProxyFactory对象,用法与xfire很像</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HessianProxyFactory&nbsp;proxyFactory</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HessianProxyFactory();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获得HelloWorld的实例,传递两个参数依次为:接口.class,该servlet的访问路径</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloWorld&nbsp;helloWorld</span><span style="color: #000000">=</span><span style="color: #000000">(HelloWorld)&nbsp;proxyFactory.create(HelloWorld.</span><span style="color: #0000ff">class</span><span style="color: #000000">,&nbsp;url);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(helloWorld.sayHelloWorld(</span><span style="color: #000000">"</span><span style="color: #000000">张三</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;效果图：<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/sxyx2008/hessian.jpg" width="974" height="270" /><br />
<br />
 <img src ="http://www.blogjava.net/sxyx2008/aggbug/330493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-09-01 09:24 <a href="http://www.blogjava.net/sxyx2008/archive/2010/09/01/330493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻松使用xfire编写返回值为list的webservice服务</title><link>http://www.blogjava.net/sxyx2008/archive/2010/07/14/326063.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Wed, 14 Jul 2010 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/07/14/326063.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/326063.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/07/14/326063.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/326063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/326063.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;功能描述：平常在项目中使用xfire来写webservice返回值大都为字符串，今天无意间查看了xfire的官方文档，发现用xfire来编写返回值为list的web服务也很简单。但步骤稍微繁琐一点。怕遗忘，特此记录一番。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/sxyx2008/archive/2010/07/14/326063.html'>阅读全文</a><img src ="http://www.blogjava.net/sxyx2008/aggbug/326063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-07-14 11:05 <a href="http://www.blogjava.net/sxyx2008/archive/2010/07/14/326063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在XFire中使用友好的接口参数名</title><link>http://www.blogjava.net/sxyx2008/archive/2010/06/07/322945.html</link><dc:creator>雪山飞鹄</dc:creator><author>雪山飞鹄</author><pubDate>Mon, 07 Jun 2010 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/sxyx2008/archive/2010/06/07/322945.html</guid><wfw:comment>http://www.blogjava.net/sxyx2008/comments/322945.html</wfw:comment><comments>http://www.blogjava.net/sxyx2008/archive/2010/06/07/322945.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/sxyx2008/comments/commentRss/322945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sxyx2008/services/trackbacks/322945.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 近期在做多个数据库应用交互系统，其中数据交互采用了webservice的方式，说到webservice项目中不得不用到xfire这个框架，有了它我们几乎不用写代码，就可以很快速的创建自己的webservice<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但在使用的过程中遇到一些小细节上的问题：<br />
就是在写webservice接口的时候，通常大家都会定义一些方法的参数，但是根据xfire的xsd文件描述情况来看，它的参数命名通常是in0,in1等等，一次类推，很不友好。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 按照XFire-Spring生成的WSDL文档中接口参数名极不友好： <br />
&lt;xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string" /&gt; <br />
&lt;xsd:element maxOccurs="1" minOccurs="1" name="in1" nillable="true" type="xsd:string" /&gt; <br />
&lt;xsd:element maxOccurs="1" minOccurs="1" name="in2" nillable="true" type="xsd:string" /&gt; <br />
&lt;xsd:element maxOccurs="1" minOccurs="1" name="in3" nillable="true" type="xsd:string" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大家都知道，作为一个合格的程序员，在写代码的时候方法参数命名什么的要尽量做到见名知意，显然他这种风格是不适合我们的。因此我们要创新，这就有了下文。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如何自动将in0与in1替换成友好的参数名称呢 ?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方法如下： <br />
&nbsp; 1.在与接口类同一包下面建一个接口类名称.aegis.xml 的文件，内容如下 <br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;&nbsp;&nbsp; <br />
&lt;mappings&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;mapping&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;method name="settleMessage"&gt;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter index="0"&nbsp; mappedName="id" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter index="1"&nbsp; mappedName="username" /&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter index="2"&nbsp; mappedName="pass" /&gt;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/method&gt; <br />
&nbsp;&nbsp; &lt;/mapping&gt;&nbsp;&nbsp; <br />
&lt;/mappings&gt;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name为接口中方法名称 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index为方法中第一个参数 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mappedName为替换后的名称 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该XML文件的位置一定要与你定义的webservice的接口位于同一个目录（包下）否则不起作用</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/sxyx2008/aggbug/322945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sxyx2008/" target="_blank">雪山飞鹄</a> 2010-06-07 10:13 <a href="http://www.blogjava.net/sxyx2008/archive/2010/06/07/322945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>