zoukankan      html  css  js  c++  java
  • xfire发布webservice

     一. 使用XFire发布WebService


       1. 创建service接口 

     

    Java代码 
    1.  package com.test.service;  
    2.  import com.test.service.bean.User;  
    3.    
    4.  public interface IHelloService {  
    5.     public String sayHello(String name);  
    6.     public User  getUser(User user);  
    7.     }  
    8. }  

      2.创建Service接口的实现类

    Java代码  收藏代码
    1. package com.test.service;  
    2. import com.test.service.bean.User;  
    3. public class HelloService implements IHelloService{   
    4.     public String sayHello(String name){  
    5.         return "Hello, "+name;  
    6.     }  
    7.     public User getUser(User user) {  
    8.         User userNew = new User();  
    9.         userNew.setId("new:"+user.getId());  
    10.         userNew.setName("new:"+user.getName());  
    11.         return userNew;  
    12.     }  
    13. }  

      

    Java代码  收藏代码
    1. package com.test.service.bean;  
    2. public class User {       
    3.     private String id;  
    4.     private String name;      
    5.     public String getId() {  
    6.         return id;  
    7.     }  
    8.     public void setId(String id) {  
    9.         this.id = id;  
    10.     }  
    11.     public String getName() {  
    12.         return name;  
    13.     }  
    14.     public void setName(String name) {  
    15.         this.name = name;  
    16.     }  
    17. }  

     

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

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="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.   
    7. <servlet>  
    8.     <servlet-name>XFireServlet</servlet-name>  
    9.     <servlet-class>  
    10.         org.codehaus.xfire.transport.http.XFireConfigurableServlet  
    11.     </servlet-class>  
    12. </servlet>  
    13. <servlet-mapping>  
    14.     <servlet-name>XFireServlet</servlet-name>  
    15.     <url-pattern>/servlet/XFireServlet/*</url-pattern>  
    16. </servlet-mapping>  
    17. <servlet-mapping>  
    18.     <servlet-name>XFireServlet</servlet-name>  
    19.     <url-pattern>/services/*</url-pattern>  
    20. </servlet-mapping>  
    21. </web-app>  

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

    Xml代码 
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="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. package com.test.client;  
    2.   
    3. import java.net.MalformedURLException;  
    4. import org.codehaus.xfire.XFireFactory;  
    5. import org.codehaus.xfire.client.XFireProxyFactory;  
    6. import org.codehaus.xfire.service.Service;  
    7. import org.codehaus.xfire.service.binding.ObjectServiceFactory;  
    8. import com.test.service.IHelloService;  
    9. import com.test.service.bean.User;  
    10.   
    11. public class ClientTest {  
    12.     public static void main(String args[]) throws MalformedURLException {  
    13.         Service service = new ObjectServiceFactory().create(IHelloService.class);  
    14.         XFireProxyFactory factory = new XFireProxyFactory(XFireFactory  
    15.                 .newInstance().getXFire());  
    16.         String url = "http://localhost:8080/ws2/services/HelloService";  
    17.         IHelloService helloService = (IHelloService) factory.create(service,url);  
    18.         System.out.println(helloService.sayHello("张三"));  
    19.         User user = new User();  
    20.         user.setName("张三");  
    21.         System.out.println(helloService.getUser(user).getName());  
    22.     }  
    23. }  

     
         执行结果如下:

    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. <?xml version="1.0" encoding="UTF-8"?>  
    2. <project name="WebService" basedir="." default="gen-webservice">  
    3.     <property file="build.properties"></property>  
    4.     <path id="project-classpath">  
    5.         <fileset dir="${lib.dir}">  
    6.             <include name="**/*.jar" />   
    7.         </fileset>  
    8.     </path>  
    9.   
    10.     <target name="gen-webservice">  
    11.         <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"   
    12.                                              classpathref="project-classpath" />  
    13.         <wsgen outputDirectory="${src.dir}"  wsdl="${wsdl.dir}"   
    14.                     package="stub.test.client" overwrite="true"/>          
    15.     </target>  
    16. </project>  

        

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

     

     

     

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

    Java代码  收藏代码
    1. package com.test.client;  
    2. import stub.test.client.HelloServiceClient;  
    3. import stub.test.client.HelloServicePortType;  
    4. import com.test.service.bean.ObjectFactory;  
    5. import com.test.service.bean.User;  
    6.   
    7. public class HelloServiceTest {  
    8.   
    9.     public static void main(String args[]){  
    10.         HelloServiceClient service = new HelloServiceClient();        
    11.         HelloServicePortType portType = service.getHelloServiceHttpPort();            
    12.         System.out.println(portType.sayHello("张三"));  
    13.           
    14.         ObjectFactory factory = new ObjectFactory();          
    15.         User user = factory.createUser();  
    16.         user.setName(factory.createUserName("张三"));  
    17.         System.out.println(portType.getUser(user).getName().getValue());  
    18.     }  
    19. }  

     

        执行结果如下:

    Java代码  收藏代码
    1. Hello, 张三  
    2. new:张三  
  • 相关阅读:
    leetcode 268. Missing Number
    DBSCAN
    python二维数组初始化
    leetcode 661. Image Smoother
    leetcode 599. Minimum Index Sum of Two Lists
    Python中的sort() key含义
    leetcode 447. Number of Boomerangs
    leetcode 697. Degree of an Array
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月3日)
    北京Uber优步司机奖励政策(1月2日)
  • 原文地址:https://www.cnblogs.com/liuruichao/p/4005900.html
Copyright © 2011-2022 走看看