`
mywebcode
  • 浏览: 1004218 次
文章分类
社区版块
存档分类
最新评论

XFire创建WebService实例

 
阅读更多

XFire创建WebService实例应用

XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,
XFire的配置非常简单,可以非常容易地和Spring集成。
下载地址:http://xfire.codehaus.org/Download

一.使用XFire发布WebService


1.创建service接口

Java代码 收藏代码
  1. packagecom.test.service;
  2. importcom.test.service.bean.User;
  3. publicinterfaceIHelloService{
  4. publicStringsayHello(Stringname);
  5. publicUsergetUser(Useruser);
  6. }
  7. }

2.创建Service接口的实现类

Java代码 收藏代码
  1. packagecom.test.service;
  2. importcom.test.service.bean.User;
  3. publicclassHelloServiceimplementsIHelloService{
  4. publicStringsayHello(Stringname){
  5. return"Hello,"+name;
  6. }
  7. publicUsergetUser(Useruser){
  8. UseruserNew=newUser();
  9. userNew.setId("new:"+user.getId());
  10. userNew.setName("new:"+user.getName());
  11. returnuserNew;
  12. }
  13. }

Java代码 收藏代码
  1. packagecom.test.service.bean;
  2. publicclassUser{
  3. privateStringid;
  4. privateStringname;
  5. publicStringgetId(){
  6. returnid;
  7. }
  8. publicvoidsetId(Stringid){
  9. this.id=id;
  10. }
  11. publicStringgetName(){
  12. returnname;
  13. }
  14. publicvoidsetName(Stringname){
  15. this.name=name;
  16. }
  17. }

3.在web.xml文件中进行XFire拦截配置,可参照官网提供的sample。

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  5. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  6. <servlet>
  7. <servlet-name>XFireServlet</servlet-name>
  8. <servlet-class>
  9. org.codehaus.xfire.transport.http.XFireConfigurableServlet
  10. </servlet-class>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>XFireServlet</servlet-name>
  14. <url-pattern>/servlet/XFireServlet/*</url-pattern>
  15. </servlet-mapping>
  16. <servlet-mapping>
  17. <servlet-name>XFireServlet</servlet-name>
  18. <url-pattern>/services/*</url-pattern>
  19. </servlet-mapping>
  20. </web-app>

4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml),
在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://xfire.codehaus.org/config/1.0">
  3. <service>
  4. <name>HelloService</name>
  5. <serviceClass>com.test.service.IHelloService</serviceClass>
  6. <implementationClass>com.test.service.HelloService</implementationClass>
  7. </service>
  8. </beans>

5.将xfire的Jar包和相关依赖包拷到系统应用中,在Tomcat下部署应用。
启动tomcat后访问服务(需在应用后加上/services,webservice才会进行拦截):
例:http://localhost:8080/ws2/services。(IE下有时无法显示列表,可用其它浏览器显示或指定接口名称)
界面如下:

点击后查看详细的wsdl文档,不同的浏览器下访问会有区别,展示效果不一致。

二.建立XFire客户端进行调用

1.本地客户端调用,与webservice服务在同一应用。

Java代码 收藏代码
  1. packagecom.test.client;
  2. importjava.net.MalformedURLException;
  3. importorg.codehaus.xfire.XFireFactory;
  4. importorg.codehaus.xfire.client.XFireProxyFactory;
  5. importorg.codehaus.xfire.service.Service;
  6. importorg.codehaus.xfire.service.binding.ObjectServiceFactory;
  7. importcom.test.service.IHelloService;
  8. importcom.test.service.bean.User;
  9. publicclassClientTest{
  10. publicstaticvoidmain(Stringargs[])throwsMalformedURLException{
  11. Serviceservice=newObjectServiceFactory().create(IHelloService.class);
  12. XFireProxyFactoryfactory=newXFireProxyFactory(XFireFactory
  13. .newInstance().getXFire());
  14. Stringurl="http://localhost:8080/ws2/services/HelloService";
  15. IHelloServicehelloService=(IHelloService)factory.create(service,url);
  16. System.out.println(helloService.sayHello("张三"));
  17. Useruser=newUser();
  18. user.setName("张三");
  19. System.out.println(helloService.getUser(user).getName());
  20. }
  21. }


执行结果如下:

Java代码 收藏代码
  1. Hello,张三
  2. new:张三

2. 利用XFire创建build.xml文件生成客户端代码调用webservice服务

2.1在src目录下创建build.properties文件,配置如下:

Java代码 收藏代码
  1. src.dir=${basedir}
  2. lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib
  3. wsdl.dir=http\://localhost\:8080/ws2/services/HelloService?wsdl

2.2在src目录下创建build.xml文件,配置如下:

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <projectname="WebService"basedir="."default="gen-webservice">
  3. <propertyfile="build.properties"></property>
  4. <pathid="project-classpath">
  5. <filesetdir="${lib.dir}">
  6. <includename="**/*.jar"/>
  7. </fileset>
  8. </path>
  9. <targetname="gen-webservice">
  10. <taskdefname="wsgen"classname="org.codehaus.xfire.gen.WsGenTask"
  11. classpathref="project-classpath"/>
  12. <wsgenoutputDirectory="${src.dir}"wsdl="${wsdl.dir}"
  13. package="stub.test.client"overwrite="true"/>
  14. </target>
  15. </project>

用ant构建生成代码,生成后的目录如下:

2.3编写客户端代码进行调用

Java代码 收藏代码
  1. packagecom.test.client;
  2. importstub.test.client.HelloServiceClient;
  3. importstub.test.client.HelloServicePortType;
  4. importcom.test.service.bean.ObjectFactory;
  5. importcom.test.service.bean.User;
  6. publicclassHelloServiceTest{
  7. publicstaticvoidmain(Stringargs[]){
  8. HelloServiceClientservice=newHelloServiceClient();
  9. HelloServicePortTypeportType=service.getHelloServiceHttpPort();
  10. System.out.println(portType.sayHello("张三"));
  11. ObjectFactoryfactory=newObjectFactory();
  12. Useruser=factory.createUser();
  13. user.setName(factory.createUserName("张三"));
  14. System.out.println(portType.getUser(user).getName().getValue());
  15. }
  16. }

执行结果如下:

Java代码 收藏代码
  1. Hello,张三
  2. new:张三
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics