Myeclipse5.X 支持xfire支持的非常棒。这里讲解一个简单的例子,此文章为引用文章,仅做保留,供学习参考使用。<o:p></o:p>
一、服务端程序开发<o:p></o:p>
1 、首先建立一个web service工程 :<o:p></o:p>
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"> </v:stroke> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> </v:f> <v:f eqn="sum @0 1 0"> </v:f> <v:f eqn="sum 0 0 @1"> </v:f> <v:f eqn="prod @2 1 2"> </v:f> <v:f eqn="prod @3 21600 pixelWidth"> </v:f> <v:f eqn="prod @3 21600 pixelHeight"> </v:f> <v:f eqn="sum @0 0 1"> </v:f> <v:f eqn="prod @6 1 2"> </v:f> <v:f eqn="prod @7 21600 pixelWidth"> </v:f> <v:f eqn="sum @8 21600 0"> </v:f> <v:f eqn="prod @7 21600 pixelHeight"> </v:f> <v:f eqn="sum @10 21600 0"> </v:f> </v:formulas> <v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"> </v:path> <o:lock aspectratio="t" v:ext="edit"> </o:lock> </v:shapetype> <v:shape id="_x0000_i1025" style="WIDTH: 265.5pt; HEIGHT: 321pt" type="#_x0000_t75" alt=""> <v:imagedata src="file:///D:\Winbak\Temp\msohtml1\01\clip_image001.gif" o:href="/images/blogjava_net/killme2008/new_wizard1.gif"> </v:imagedata> </v:shape> <o:p> </o:p>
<v:shape id="_x0000_i1026" style="WIDTH: 328.5pt; HEIGHT: 312pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image002.png"> </v:imagedata> </v:shape> <o:p> </o:p>
<v:shape id="_x0000_i1027" style="WIDTH: 345pt; HEIGHT: 308.25pt" type="#_x0000_t75" alt=""> <v:imagedata src="file:///D:\Winbak\Temp\msohtml1\01\clip_image004.gif" o:href="/images/blogjava_net/killme2008/new_wizard3.gif"> </v:imagedata> </v:shape> <o:p> </o:p>
<v:shape id="_x0000_i1028" style="WIDTH: 339.75pt; HEIGHT: 276pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image005.png"> </v:imagedata> </v:shape> <o:p> </o:p>
点击finish之后,myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的:<o:p></o:p>
Servlet 代码<o:p></o:p>
<servlet> <o:p></o:p>
<servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <o:p> </o:p>
<load-on-startup>0</load-on-startup> <o:p></o:p>
</servlet> <o:p></o:p>
<servlet-mapping> <o:p></o:p>
<servlet-name>XFireServlet</servlet-name> <o:p></o:p>
<url-pattern>/services/*</url-pattern> <o:p></o:p>
</servlet-mapping> <o:p></o:p>
<o:p> </o:p>
2 、接下来,现在编写要导出的pojo类 ,首先是接口:<o:p></o:p>
<v:shape id="_x0000_i1029" style="WIDTH: 252.75pt; HEIGHT: 383.25pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image007.png"> </v:imagedata> </v:shape> <o:p> </o:p>
过程:File>New>Other>MyEclipse>Web Service<o:p></o:p>
<v:shape id="_x0000_i1030" style="WIDTH: 347.25pt; HEIGHT: 237.75pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image009.png"> </v:imagedata> </v:shape> <o:p> </o:p>
选择:Create web service from Java bean,把Create new javabean也勾上<o:p></o:p>
3 、在导航页面中,输入<o:p></o:p>
web service name:HelloWorldTest<o:p></o:p>
java package : services<o:p></o:p>
services Interface : HelloWorldTestRemote<o:p></o:p>
services impl.class : HelloWorldTestBean<o:p></o:p>
<v:shape id="_x0000_i1031" style="WIDTH: 347.25pt; HEIGHT: 333pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image011.png"> </v:imagedata> </v:shape> <o:p> </o:p>
其他的默认,点finish<o:p></o:p>
最后可以看到Web Services 下面的services.xml的内容如下<o:p></o:p>
<?xml version="1.0" encoding="UTF-8"?><o:p></o:p>
<beans xmlns="http://xfire.codehaus.org/config/1.0"><o:p></o:p>
<service><o:p></o:p>
<name>HelloWorldTest</name><o:p></o:p>
<serviceClass>services.HelloWorldTestRemote</serviceClass> <implementationClass>services.HelloWorldTestBean</implementationClass><o:p></o:p>
<style>wrapped</style><o:p></o:p>
<use>literal</use><o:p></o:p>
<scope>application</scope><o:p></o:p>
</service><o:p></o:p>
</beans><o:p></o:p>
4 、services包中的文件 :<o:p></o:p>
HelloWorldTestRemote.java<o:p></o:p>
-----------------------------------------------<o:p></o:p>
package services;<o:p></o:p>
public interface HelloWorldTestRemote <o:p></o:p>
{ <o:p></o:p>
public String example(String message); <o:p></o:p>
}<o:p></o:p>
----------------------------------------------------------<o:p></o:p>
HelloWorldTestImpl.java<o:p></o:p>
----------------------------------------------------<o:p></o:p>
package services;<o:p></o:p>
public class HelloWorldTestBean implements HelloWorldTestRemote <o:p></o:p>
{<o:p></o:p>
public String example(String message) <o:p></o:p>
{<o:p></o:p>
return "Hello:"+message;<o:p></o:p>
} <o:p></o:p>
}<o:p></o:p>
------------------------------------------------------------<o:p></o:p>
到此为止webServices编码工作完成,现在开始部署到tomcat这里省略。<o:p></o:p>
部署好后可以测试下:<o:p></o:p>
(1)查看可用的服务<o:p></o:p>
http://localhost:8080/HelloWorld/services <o:p> </o:p>
(2)查看wsdl<o:p></o:p>
http://localhost:8080/HelloWorld/services/HelloWorldTest?wsdl <o:p> </o:p>
<o:p> </o:p>
/<o:p></o:p>
/<o:p></o:p>
二、客户端应用程序开发<o:p></o:p>
1 、新建工程useWebService,并且建立client和services包<o:p></o:p>
2 、bulid path中导入,XFire 1.1 core libraries和XFire 1.1 HTTP client libraries.<o:p></o:p>
<v:shape id="_x0000_i1032" style="WIDTH: 393.75pt; HEIGHT: 320.25pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image013.png"> </v:imagedata> </v:shape> <o:p> </o:p>
SayHello.java<o:p></o:p>
----------------------------------------<o:p></o:p>
package client;<o:p></o:p>
import java.net.MalformedURLException;<o:p></o:p>
import org.codehaus.xfire.XFireFactory;<o:p></o:p>
import org.codehaus.xfire.client.XFireProxyFactory;<o:p></o:p>
import org.codehaus.xfire.service.Service;<o:p></o:p>
import org.codehaus.xfire.service.binding.ObjectServiceFactory;<o:p></o:p>
import services.HelloWorldTestRemote;<o:p></o:p>
public class SayHello <o:p></o:p>
{<o:p></o:p>
public String say(String name) <o:p></o:p>
{<o:p></o:p>
String result = "";<o:p></o:p>
Service srvcModel = new ObjectServiceFactory().create(HelloWorldTestRemote.class);<o:p></o:p>
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());<o:p></o:p>
String helloWorldURL = "http://localhost:8080/HelloWorld/services/HelloWorldTest";<o:p></o:p>
try <o:p></o:p>
{<o:p></o:p>
HelloWorldTestRemote srvc = (HelloWorldTestRemote) factory.create(srvcModel, helloWorldURL);<o:p></o:p>
result = srvc.example(name);<o:p></o:p>
System.out.println(result);<o:p></o:p>
} <o:p></o:p>
catch (MalformedURLException e) <o:p></o:p>
{<o:p></o:p>
e.printStackTrace();<o:p></o:p>
} finally <o:p></o:p>
{<o:p></o:p>
return result;<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
--------------------------------------------------------------<o:p></o:p>
HelloWorldTestRemote.java<o:p></o:p>
---------------------------------------------------------------<o:p></o:p>
package services;<o:p></o:p>
<o:p> </o:p>
public interface HelloWorldTestRemote <o:p></o:p>
{<o:p></o:p>
public String example(String message);<o:p></o:p>
}-----------------------------------------------------------------<o:p></o:p>
创建index.jsp,body部分<o:p></o:p>
-----------------------<o:p></o:p>
<form name="form1" action="say.jsp" method="POST"><o:p></o:p>
您的大名:<input name="userName" type="text"/> <input value="提交" type="submit"/> <o:p></o:p>
</form><o:p></o:p>
-------------------------------<o:p></o:p>
创建say.jsp,body部分<o:p></o:p>
----------------------------------------------------------------<o:p></o:p>
<%<o:p></o:p>
String name=(String)request.getParameter("userName"); <o:p></o:p>
String result=new SayHello().say(name);<o:p></o:p>
out.print(result);<o:p></o:p>
%><o:p></o:p>
webService 远程调用结果: <%=result %><o:p></o:p>
------------------------------------------------------------------------<o:p></o:p>
运行下测试!OK<o:p></o:p>