路西法-zkj的gravatar头像
路西法-zkj 2015-03-16 12:14:51

java webservice xfire实例入门学习教程

第一类:在一个项目中实现服务端和客户端

第一步:新建一个接口:

package pack.java.demo;

public interface IHelloWorld {

         public String hello(String name);

}

第二步:接口实现类

package pack.java.demo;

public class Hello implements IHelloWorld {



         @Override

         public String hello(String name) {

        

         if (null == name){

                   return "How are you  Guest";

        }

        return "How are you , " + name;

         }

}

第三步:在src下新建META-INF/xfire/service.xml

service.xml具体内容

<!--Start SNIPPET:services--> 

<beans> 

    <service xmlns="http://xfire.codehaus.org/config/1.0"> 

        <!-- 服务名称 --> 

        <name>HelloWorld_FristXFire</name> 

        <!-- 实现类的命名空间 --> 

        <namespace>http://pack.java.demo/Hello</namespace> 

        <!-- 实现类所指的包和类 --> 

        <serviceClass>pack.java.demo.IHelloWorld</serviceClass> 

        <!-- 对应接口的实现 --> 

        <implementationClass>pack.java.demo.Hello</implementationClass> 

        <scope>request</scope> 

    </service> 

</beans> 

 

第四步:配置web.xml文件

 

 <servlet>

    <servlet-name>Xfile</servlet-name>

    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>

    <load-on-startup>0</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>Xfile</servlet-name>

    <url-pattern>/servlet/XFireServlet/*</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

    <servlet-name>Xfile</servlet-name>

    <url-pattern>/service/*</url-pattern>

  </servlet-mapping>

 

第五步:写客户端测试:

package pack.java.demo.cilent;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.XFireProxyFactory;

import org.codehaus.xfire.service.Service;

import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import pack.java.demo.IHelloWorld;


public class XFireCilentDemo {

          public static void main(String[] args) { 

                 String url="http://localhost:8080/z_xfire/service/HelloWorld_FristXFire"; 

                 Service serviceModel=new ObjectServiceFactory().create(IHelloWorld.class); 

                 try { 

                     IHelloWorld service=(IHelloWorld)new XFireProxyFactory().create(serviceModel, url);  

                     String resultString=service.hello("lucifur"); 

                     System.out.println(resultString); 

                 } catch (MalformedURLException e) { 

                     e.printStackTrace(); 

                 } 

             }

}

 

部署项目,运行客户端类,打印 how are you lucifur

 

启动项目后,在浏览器中输入

http://localhost:8080/z_xfire/service/HelloWorld_FristXFire?wsdl

可以测试webservice,是否成功

第二类:在两个不同的服务器下的两个项目之间的webservice调用

按照第一类的建立两个项目,分别为A和B(本机的话,可以修改端口号,实现两个项目处于不同的服务器)

A:http://localhost:8080/A_xfire/service/A_FristXFire?wsdl

B:http://localhost:9080/B_xfire/service/B_FristXFire?wsdl

假如B的webservice要调用A的webservice,按照以下步骤

一:启动A的服务器

二:选中B的项目,右击new->other->web services->web service client

         -->输入http://localhost:8080/A_xfire/service/A_FristXFire?wsdl-->finish

         实现以上操作,会发现在B项目下多了一个包,包里装了5个类文件

三:在B的接口实现类的方法里,可以实例化生成上面自动生成以proxy结尾的类的类对象,从而调用A里的接口实现类里的方法。

四:启动B服务器,执行,B里的客户端。查看控制台打印。


最代码官方编辑于2015-3-16 13:47:57


打赏

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友