微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice 示例

XFire创建WebService实例应用

 

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

   一. 使用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接口的实现类

class HelloService implements IHelloService{   
  • public String sayHello(String name){  
  •         return "Hello, "+name;  
  • public User getUser(User user) {  
  •         User userNew = new User();  
  •         userNew.setId("new:"+user.getId());  
  •         userNew.setName("new:"+user.getName());  
  • return userNew;  
  •   

    package com.test.service.bean;  
  • class User {       
  • private String id;  
  • private String name;      
  • public String getId() {  
  • return id;  
  • void setId(String id) {  
  • this.id = id;  
  • public String getName() {  
  • return name;  
  • void setName(String name) {  
  • this.name = name;  
  •  

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

    Xml代码  

    收藏代码

      <?xml version="1.0" encoding="UTF-8"?>  
    1. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
    2.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    3.    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
    4.    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
    5.   
    6. servlet     servlet-name>XFireServlet</servlet-class         org.codehaus.xfire.transport.http.XFireConfigurableServlet  
    7. servlet-mappingurl-pattern>/servlet/XFireServlet/*>/services/*web-app>  

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

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

     

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

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

      

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

    package com.test.client;  
  • import java.net.MalformedURLException;  
  • import org.codehaus.xfire.XFireFactory;  
  • import org.codehaus.xfire.client.XFireProxyFactory;  
  • import org.codehaus.xfire.service.Service;  
  • import org.codehaus.xfire.service.binding.ObjectServiceFactory;  
  • import com.test.service.IHelloService;  
  • class ClientTest {  
  • static void main(String args[]) throws MalformedURLException {  
  •         Service service = new ObjectServiceFactory().create(IHelloService.class);  
  •         XFireProxyFactory factory = new XFireProxyFactory(XFireFactory  
  •                 .newInstance().getXFire());  
  •         String url = "http://localhost:8080/ws2/services/HelloService";  
  •         IHelloService helloService = (IHelloService) factory.create(service,url);  
  •         System.out.println(helloService.sayHello("张三"));  
  •         User user =          user.setName("张三");  
  •         System.out.println(helloService.getUser(user).getName());  
  •  
         执行结果如下:

    Hello, 张三  
  • new:张三  
  •    2. 利用XFire创建build.xml文件生成客户端代码调用webservice服务

      

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

    src.dir=${basedir}  
  • lib.dir=D:/myspace/ws2/Webroot/WEB-INF/lib  
  • wsdl.dir=http\://localhost\:8080/ws2/services/HelloService?wsdl  
  •      2.2在src目录下创建build.xml文件,配置如下:

    project name="WebService" basedir="." default="gen-webservice"property file="build.properties">propertypath id="project-classpath"         fileset dir="${lib.dir}"             include name="**/*.jar" />   
  • filesetpathtarget name="gen-webservice"taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"   
  •                                              classpathref="project-classpath" />  
  • wsgen outputDirectory="${src.dir}"  wsdl="${wsdl.dir}"   
  •                     package="stub.test.client" overwrite="true"/>          
  • targetproject     

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

     

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

    import stub.test.client.HelloServiceClient;  
  • import stub.test.client.HelloServicePortType;  
  • import com.test.service.bean.ObjectFactory;  
  • class HelloServiceTest {  
  • void main(String args[]){  
  •         HelloServiceClient service = new HelloServiceClient();        
  •         HelloServicePortType portType = service.getHelloServiceHttpPort();            
  •         System.out.println(portType.sayHello("张三"));  
  •           
  •         ObjectFactory factory = new ObjectFactory();          
  •         User user = factory.createuser();  
  •         user.setName(factory.createuserName("张三"));  
  •         System.out.println(portType.getUser(user).getName().getValue());  
  •     执行结果如下:

    new:张三  
  • 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

    相关推荐