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

webservice demo

1.下载需要的xfire包 
下载地址http://xfire.codehaus.org/Download ,下载xfire-distribution-1.2.6.zip文件,并解压。 
新建web项目,取名TestXFire,将解压目录下的xfire-all-1.2.6.jar和lib目录下的所有包导入到项目中。 
 
2.创建类 
使用接口的设计是一个好的实践,所以先创建接口:ITestService,代码如下:
package com.gdie.xfire.example; 
//该接口提供一个方法,用于计算 
public interface ITestService { 
 public int add(int p1,int p2); 

创建接口实现类 
package com.gdie.xfire.example; 
 
public class TestService implements ITestService { 
 
 public int add(int p1,int p2) { 
  // Todo Auto-generated method stub 
  return p1 + p2; 
 } 
 

3.创建meta-inf文件夹 
简便起见,将Webroot下的meta-inf文件夹复制到项目的src下,这样的话会在部署发布目录下web-inf下的classes下自动建立meta-inf,而同时Webroot下也有一个meta-inf文件夹,这两个容易混淆,实际webservice下真正起作用的是web-inf下的classes下的meta-inf,所以,关键是在项目的src下面有meta-inf这个文件夹,并定义里面的内容,与Webroot下meta-inf无关。 
然后在src下的meta-inf建立xfire子文件夹,里面建立一名叫services.xml配置文件,配置如下:  


<?xml version="1.0" encoding="UTF-8"?>  
 
<beans xmlns="http://xfire.codehaus.org/config/1.0">  
 
<service>  
 
   <name>TestService</name>  
 
   <namespace>http://com/gdie/xfire/example/ITestService</namespace>  
  
   <serviceClass>com.gdie.xfire.example.ITestService</serviceClass>  
 
   <implementationClass>com.gdie.xfire.example.TestService</implementationClass>  
 
</service>  
 
</beans>  


注意:包文件路径com.gdie.xfire.example.ITestService等需要正确对应。 
关键是在src下面要有meta-inf文件夹和里面的文件,否则会报找不到services.xml错误而加载不了项目。  
 
4.修改web.xml 
配置文件关键是定义XFireServlet,对应代码如下:  
 
<?xml version="1.0" encoding="UTF-8"?>  
 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
    <welcome-file-list>  
 
       <welcome-file>index.jsp</welcome-file>  
 
    </welcome-file-list>  
 
    <servlet>  
 
       <servlet-name>XFireServlet</servlet-name>  
 
       <servlet-class>  
 
           org.codehaus.xfire.transport.http.XFireConfigurableServlet  
 
       </servlet-class>  
 
       <load-on-startup>0</load-on-startup>  
 
    </servlet>  
 
    <servlet-mapping>  
 
       <servlet-name>XFireServlet</servlet-name>  
 
       <url-pattern>/services/*</url-pattern>  
 
    </servlet-mapping>  
 
</web-app>  


至此,服务器端部署完毕。完整的项目文件结构如图: 
  
 将项目加载进tomcat并启动tomcat,无异常。  
 
打开ie,输入  
http://localhost:8080/TestXFire/services/  
出现  
  
 表明部署成功,点wsdl可以看见一堆xml代码。  
 
5.客户端测试 
先将刚才建立的TestXFire整个项目打包成jar包(myeclipse的export),名为TestXFire.jar,再新建一个web项目TestXFireClient,导入xfire的包,和刚才的TestXFire工程的打包TestXFire.jar  
 
在src下新建一个测试类,代码如下:  


package com.gdie.xfire.test; 
 
import org.codehaus.xfire.service.Service; 
import org.codehaus.xfire.service.binding.ObjectServiceFactory; 
import org.codehaus.xfire.client.XFireProxyFactory; 
 
import com.gdie.xfire.example.ITestService;; 
 
public class MyClient { 
 public static void main(String[] args) { 
  try{ 
   Service serviceModel = new ObjectServiceFactory().create( 
     ITestService.class,"TestService","http://com/gdie/xfire/example/ITestService",null); 
    
   ITestService service = (ITestService) new XFireProxyFactory().create( 
     serviceModel,"http://localhost:8080/TestXFile/services/TestService"); 
    
   System.out.println("返回值是:"+service.add(5,8)); 
  }catch (Exception e) { 
   // Todo: handle exception 
   e.printstacktrace(); 
  } 
 } 


运行,输出结果是:  
返回值是:13 
则说明客户端成功。  
 
至此,webservice部署测试例子成功。 
 
【项目创建】
 
 
包名 做了一些修改
 
这里只贴出比较关键的文件
 
【src/meta-inf/xfire/services.xml】
 


<?xml version="1.0" encoding="UTF-8"?>  
 
<beans xmlns="http://xfire.codehaus.org/config/1.0">  
 
    <service>  
     
       <name>TestService</name>  
     
       <namespace>http://com/feihuale/xfire/demo/ITestService</namespace>  
     
       <serviceClass>com.feihuale.xfire.demo.ITestService</serviceClass>  
     
       <implementationClass>com.feihuale.xfire.demo.TestService</implementationClass>  
     
    </service>  
 
</beans>  
 


【web.xml】
 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <welcome-file-list> 
 
        <welcome-file>index.jsp</welcome-file
 
    </welcome-file-list> 
 
    <servlet> 
 
        <servlet-name>XFireServlet</servlet-name> 
 
        <servlet-class> 
 
            org.codehaus.xfire.transport.http.XFireConfigurableServlet 
 
        </servlet-class> 
 
        <load-on-startup>0</load-on-startup> 
 
    </servlet> 
 
    <servlet-mapping
 
        <servlet-name>XFireServlet</servlet-name> 
 
        <url-pattern>/services/*</url-pattern> 
 
    </servlet-mapping
 
</web-app> 

  【客户端项目文件】   package com.feihuale.xfire.test;    import org.codehaus.xfire.client.XFireProxyFactory;  import org.codehaus.xfire.service.Service;  import org.codehaus.xfire.service.binding.ObjectServiceFactory;    import com.feihuale.xfire.demo.ITestService;      public class MyClient {        /**      * @param args      */        public static void main(String[] args) {          try {              Service serviceModel = new ObjectServiceFactory().create(                      ITestService.class,                      "http://com/feihuale/xfire/demo/ITestService",null);                ITestService service = (ITestService) new XFireProxyFactory()                      .create(serviceModel,                              "http://localhost:8080/TestXFire/services/TestService");                System.out.println("返回值是:" + service.add(5,8));          } catch (Exception e) {              // Todo: handle exception              e.printstacktrace();          }      }  }   

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

相关推荐