xfire

1、xfire服务端

xfire读取services.xml的默认路径为:
 
(1)web.xml文件的配置内容为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    
<web-app>


  <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <display-name>XFire Servlet</display-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>


(2)services.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>IMathService</name>
<serviceClass>
com.mybank.XFire.example.IMathService
</serviceClass>
<implementationClass>
com.mybank.XFire.example.MathServiceImpl
</implementationClass>
</service>
</beans>
(3)applicationContext.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />===》记得导入
   <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">    
 <property name="serviceFactory" ref="xfire.serviceFactory" />    
 <property name="xfire" ref="xfire" />   
   </bean> 
     
   <bean name="IMathService" parent="baseWebService">   
      <property name="name" value="IMathService(services.xml中name的值)"/> 
 <property name="serviceBean" ref="MathServiceImpl(子类bean的id)" />    
 <property name="serviceClass" value="com.mybank.XFire.example.IMathService.IMathService(接口全路径名)" />   
   </bean>  
   
   <bean name="MathServiceImpl" class="com.mybank.XFire.example.MathServiceImpl"> </bean>
 </beans>


(4)访问的url为:假设项目部署在本地的tomcat下:其中
url:http://localhost:8080/工程名/web.xml中<servlet-mapping > 中<url-pattern >的值/services.xml中<service >中<name >的值?wsdl
例:http://localhost:8080/XFireProject/services/IMathService?wsdl     
(5)服务端代码
public class MathServiceImpl implements IMathService{


public User getUser(int userId, String userName) {
User user = new User();
user.setUserId(userId);
user.setUserName(userName);
return user;
}

public String deleteUser(User u){
System.out.println("用户"+u.getUserId()+":"+u.getUserName()+"删除成功");
return "用户"+u.getUserId()+":"+u.getUserName()+"删除成功";
}


2、xfire客户端

1、配置系统环境变量
AXIS_HOME:F:\study\Java\axis\axis2-1.6.1-bin\axis2-1.6.1
AXIS_LIB: %AXIS_HOME%/lib
path: %AXIS_HOME%/bin; 


2、运行cmd
到F:\study\Java\xfire\xfireGenerator目录下,执行WSDL2Java.bat命令,其中,改文件的内容如下:
set myPath=.\lib
set Java_Cmd=java -Djava.ext.dirs=%myPath%
%Java_Cmd% org.codehaus.xfire.gen.WsGen -wsdl http://localhost:8080/XFireProject/services/IMathService?wsdl -o ./src -p com.chen -overwrite true
pause
其中,
-o:代码生成的路径;
-p:代码生成的所在包
执行结果如下:
  



3、访问服务端代码:
注意:
1、客户端的接口要与服务端接口的方法名和返回值完全一致。
2、客户端的实体类与服务端的实体类包名、类的内容完全一致,但是类名可以不同(比如说客户端的类型为User,服务端的类名可以是User1)。
简单代码如下:
方法1(不用自动生成的代码):
public static void function1(){
Service service = new ObjectServiceFactory().create(IMathService.class);
//创建web服务的代理
XFire xFire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xFire);
//服务地址(注意:url中末尾没有"?wsdl")
String url = "http://localhost:8080/XFireProject/services/IMathService";
//生成web服务调用对象
try {
IMathService ims = (IMathService)factory.create(service,url);
User user = ims.getUser(1, "chenxiang");
System.out.println("调用返回USer对象的方法:");
System.out.println("userId:"+user.getUserId()+"\n"+"userName:"+user.getUserName());

System.out.println("===============================");
String result = ims.deleteUser(user);
System.out.println(result);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}

方法2(用自动生成的代码):
public static void function2(){
//调用自动生成的代码
String url = "http://localhost:8080/XFireProject/services/IMathService";
IMathServiceClient client = new IMathServiceClient(1,"chenxiang");
IMathServicePortType imp = client.getIMathServiceHttpPort(url);
User user = imp.getUser(1, "chenxiang");
System.out.println("调用返回USer对象的方法:");
System.out.println("userId:"+user.getUserId()+"\n"+"userName:"+user.getUserName());

System.out.println("=================================");
String result = imp.deleteUser(user);
System.out.println(result);
}
http://www.docin.com/p-251847276.html====》》》访问服务端代码参考网站。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值