`
taiwei.peng
  • 浏览: 234394 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

XFire创建WebService实例应用

阅读更多
XFire创建WebService实例应用



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



   一. 使用XFire发布WebService


   1. 创建service接口



Java代码 
package com.test.service;  
import com.test.service.bean.User;  
  
public interface IHelloService {  
    public String sayHello(String name);  
   public User  getUser(User user);  
    }  

    package com.test.service;
    import com.test.service.bean.User;
   
    public interface IHelloService {
    public String sayHello(String name);
    public User  getUser(User user);
   }
   } 
2.创建Service接口的实现类

Java代码 
package com.test.service;  
import com.test.service.bean.User;  
public 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;
import com.test.service.bean.User;
public 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;
}


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


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

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

Xml代码 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
 
<servlet> 
    <servlet-name>XFireServlet</servlet-name> 
    <servlet-class> 
        org.codehaus.xfire.transport.http.XFireConfigurableServlet  
    </servlet-class> 
</servlet> 
<servlet-mapping> 
   <servlet-name>XFireServlet</servlet-name> 
    <url-pattern>/servlet/XFireServlet/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>XFireServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 
</web-app> 
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app> 4.在class目录下建立META-INF目录,如(META-INF>xifre->services.xml),
    在services.xml文件中进行webservice服务的发布,可参照官网提供的sample。

Xml代码 
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://xfire.codehaus.org/config/1.0"> 
<service> 
    <name>HelloService</name> 
    <serviceClass>com.test.service.IHelloService</serviceClass> 
    <implementationClass>com.test.service.HelloService</implementationClass> 
</service>      
</beans> 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloService</name>
<serviceClass>com.test.service.IHelloService</serviceClass>
<implementationClass>com.test.service.HelloService</implementationClass>
</service>
</beans>

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

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


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

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

Java代码 
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;  
import com.test.service.bean.User;  
 
public class ClientTest {  
    public 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 = new User();  
        user.setName("张三");  
        System.out.println(helloService.getUser(user).getName());  
       }  

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;
import com.test.service.bean.User;

public class ClientTest {
public 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 = new User();
user.setName("张三");
System.out.println(helloService.getUser(user).getName());
}
}
执行结果如下:

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

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

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

Java代码 
src.dir=${basedir}  
lib.dir=D:/myspace/ws2/WebRoot/WEB-INF/lib  
wsdl.dir=http\://localhost\:8080/ws2/services/HelloService?wsdl 
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文件,配置如下:

Xml代码 
<?xml version="1.0" encoding="UTF-8"?> 
<project name="WebService" basedir="." default="gen-webservice"> 
   <property file="build.properties"></property> 
    <path id="project-classpath"> 
        <fileset dir="${lib.dir}"> 
            <include name="**/*.jar" />   
        </fileset> 
    </path> 
 
    <target 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"/>          
    </target> 
</project> 
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebService" basedir="." default="gen-webservice">
<property file="build.properties"></property>
<path id="project-classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>

<target 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"/>
</target>
</project>    

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

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

Java代码 
package com.test.client;  
import stub.test.client.HelloServiceClient;  
import stub.test.client.HelloServicePortType;  
import com.test.service.bean.ObjectFactory;  
import com.test.service.bean.User;  
 
public class HelloServiceTest {  
 
   public static 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());  
    }  

package com.test.client;
import stub.test.client.HelloServiceClient;
import stub.test.client.HelloServicePortType;
import com.test.service.bean.ObjectFactory;
import com.test.service.bean.User;

public class HelloServiceTest {

public static 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());
}
}

分享到:
评论

相关推荐

    JAVAEE利用XFIRE创建WEBSERVICE实例

    【JAVAEE利用XFIRE创建WEBSERVICE实例】 Java EE(Java Platform, Enterprise Edition)是用于构建企业级Web应用的标准框架,而Web服务是Java EE中一个重要的组成部分,它允许应用程序通过网络进行通信。Xfire是一...

    xfire实现webservice实例

    在IT行业中,Web服务是一种广泛使用的通信协议,它允许不同应用程序之间进行数据交换。XFire是Java平台上一个曾经流行的开源框架,专门用于构建和消费Web服务。本实例将深入探讨如何利用XFire来实现Web服务。 一、...

    XFire建立Webservice实例,入门级别,适合初学者

    【XFire建立Webservice实例详解】对于初学者来说,理解并构建一个Web Service是一个重要的学习步骤,而XFire作为一款曾经流行的开源框架,提供了一种简单的方法来创建和部署Web Service。本文将详细介绍如何利用...

    xfire发布webservice实例无需设置地址和端口号

    xfire简单实例发布webservice,引用到2个jar包的简单例子

    用xfire开发webservice实例(原稿)

    通过这个实例,开发者可以学习到如何使用XFire框架创建、配置和部署Web服务,以及如何在Eclipse或MyEclipse环境中管理项目。同时,对于Web服务的基本概念,如SOAP消息和部署描述符的使用,也是一个很好的实践机会。

    xfire发布webservice实例

    用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl

    XFire建立Webservice实例.docx

    XFire 建立 Webservice 实例 XFire 是一个基于 Java 的开源 Web 服务框架,它提供了一个简单、灵活和高效的方式来创建和消费 Web 服务。在本篇文章中,我们将详细介绍如何使用 XFire 建立一个 Webservice 实例,并...

    xfire开发WebService实例

    1. 创建Server:使用XFire的ServerFactoryBean创建服务器实例。 ```java ServerFactoryBean serverFactory = new ServerFactoryBean(); serverFactory.setServiceClass(HelloWorld.class); serverFactory....

    XFire建立Webservice实例

    【XFire建立Webservice实例详解】 XFire是一个早期流行的Java Web Service框架,它允许开发者轻松地创建和消费Web服务。本文将详细介绍如何使用XFire在MyEclipse环境中创建和部署一个简单的Web服务。 一、创建Web...

    xfire webservice 完整实例下载

    XFire Webservice是一个基于Java的开源工具,它简化了创建、部署和消费Web服务的过程。在深入探讨这个完整实例之前,我们首先需要了解Web服务的基本概念。Web服务是一种通过网络进行通信的应用程序接口(API)。它们...

    myeclipse xfire 开发webservice实例

    ### XFire Java SOAP框架概述 XFire是一款开源的Java SOAP框架,主要特点包括: ...这不仅有助于理解SOAP WebService的工作原理,还能实际操作并掌握如何使用MyEclipse与XFire框架来构建完整的WebService应用。

    使用xfire实现webservice实例

    接下来,你需要实现这个接口并创建一个服务实例。XFire会自动处理服务的发布和绑定到HTTP端点。 **3. 配置XFire** XFire可以通过XML配置文件或者编程方式来配置。配置文件通常包含服务的位置、端口设置、拦截器等...

    xfire-webservice实例(下载即可运行)

    《Xfire Webservice实例详解与应用》 Xfire是一款强大的Java Web服务框架,它简化了创建、部署和消费Web服务的过程。在这个实例中,我们将会深入探讨如何利用Xfire快速构建一个可运行的Web服务,并了解其核心概念和...

    用XFire开发Webservice简单实例

    在这个实例中,`MyEclipse下XFire开发Webservice实例.doc`文件应该包含了详细的步骤说明和源码示例,帮助读者更好地理解和实践这个过程。通过阅读文档和动手操作,开发者可以快速掌握XFire的使用技巧,从而在实际...

    MyEclipse下XFire开发Webservice实例

    2. 输入项目名称如“WebServiceServer”,在“Framework”选项中选择“XFire”,其余选项保持默认。 3. 点击“Next”,保留默认设置。 4. 在“Project Library”中选择XFire 1.2的核心库。 5. 点击“Finish”,你会...

    spring+hibernate+struts+XFire的webService实例

    总结来说,"Spring+Hibernate+Struts+XFire的WebService实例"提供了一个完整的Java Web服务解决方案,涵盖了从数据持久化到用户界面,再到Web服务的整个开发流程。这个实例对于学习和理解企业级Java应用的开发具有很...

    xfire组件实现webservice实例

    本文详细介绍了利用xfire组件实现webservice的服务端和客户端实例,适合入门参考和使用!

Global site tag (gtag.js) - Google Analytics