Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217929
  • 博文数量: 67
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-17 09:42
文章分类

全部博文(67)

文章存档

2010年(5)

2009年(7)

2008年(55)

我的朋友

分类: Java

2010-10-26 15:48:37


公司要采用WebService作为数据提供平台,经过研究决定使用CXF框架来实现, 网上有多种都是提供了Server和Client两端的代码和配置文件xml, 我学习了几篇之后感觉很是复杂, 其实Client端是用来验证Server正确性的,所以没有必要非用java去实现.由于我们的客户端应用有php部分, 所以我决定对于验证这部分由php去完成, 以下是我的实践步骤仅供参考:

1. 去官方网站下载cxf, apache-cxf-2.2.1.zip
2. 在eclipse中新建web工程, 并导入apache-cxf-2.2.1\lib下所有jar文件
3. 改写web.xml文件
Java代码
  1. "1.0" encoding="UTF-8"?>  
  2. "WebApp_ID" version="2.4"  
  3.     xmlns="" xmlns:xsi=""  
  4.     xsi:schemaLocation=" /web-app_2_4.xsd">  
  5.     scm  
  6.       
  7.         contextConfigLocation  
  8.         classpath:ws-server-beans.xml  
  9.       
  10.   
  11.       
  12.         class>org.springframework.web.context.ContextLoaderListenerclass>  
  13.       
  14.   
  15.       
  16.         CXFServlet  
  17.         class>org.apache.cxf.transport.servlet.CXFServletclass>  
  18.       
  19.       
  20.         CXFServlet  
  21.         /services/*  
  22.       
  23.   
  24.   

4. 在src文件夹下建立文件ws-server-beans.xml(当然文件名随便取,只要与web.xml中引入的一致即可.
5. 编辑文件ws-server-beans.xml内容为:
Java代码
  1. "1.0" encoding="UTF-8"?>  
  2. ""  
  3.     xmlns:xsi="" xmlns:jaxws=""  
  4.     xmlns:cxf=""  
  5.     xsi:schemaLocation="     /spring-beans-2.5.xsd"  
  6.     default-autowire="byType" default-lazy-init="true">  
  7.   
  8.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  9.     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  10.     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  11.   
  12.     "helloWorld"  
  13.         implementor="com.genscript.scm.ws.impl.HelloWorldImpl" address="/HelloWorld">  
  14.       
  15.   
  16.   

6.新建java package: com.genscript.scm.ws, 和java 类HelloWorld.java内容如下:
Java代码
  1. package com.genscript.scm.ws;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. /** 
  6.  * service interface 
  7.  *  
  8.  * @author 
  9.  *  
  10.  */  
  11. @WebService  
  12. public interface HelloWorld {  
  13.     String sayHi(String text);  
  14. }  

7.新建包com.genscript.scm.ws.impl和类HelloWorldImpl.java内容为
Java代码
  1. package com.genscript.scm.ws.impl;  
  2. import javax.jws.WebService;  
  3. import com.genscript.scm.ws.HelloWorld;  
  4. @WebService  
  5. public class HelloWorldImpl implements HelloWorld {  
  6.   
  7.     @Override  
  8.     public String sayHi(String text) {  
  9.         // TODO Auto-generated method stub  
  10.         System.out.println("java print: " + text);  
  11.         return "Hi: " + text;  
  12.     }  
  13.   
  14. }  

8. 启动tomcat, 依次访问:
,/HelloWorld?wsdl都是可以访问的,说明java服务器端已经正确完成.
9. 布置一个可以运行的php环境(此处省略详细步骤), 新建一个test.php内容如下:
Java代码
  1. ini_set("soap.wsdl_cache_enabled""0");  
  2. $path_to_wsdl = "";  
  3. $client = new SoapClient($path_to_wsdl, array('encoding'=>'UTF-8'));  
  4. try  
  5. {  
  6.     $str = "fedex php @ ' = & end";  
  7.     $param = array('arg0' => $str);  
  8.     $ret = $client->sayHi($param);  
  9.     print_r($ret);  
  10. catch (SoapFault $exception) {  
  11.     printFault($exception, $client);  
  12. }  
  13. ?>  

访问即可, 看到可以正确响应, 注意:由于CXF底层使用反射等原因, 在调用时一定要给形参以arg0, arg1等形式命名和传值, 否则服务器端接收不到值(本人找了很长时间才发现的)
10. 至此php客户端 + java web service(JWS)服务端已经成功整合运行.
  • (42.5 KB)

  • (237.9 KB)

阅读(972) | 评论(1) | 转发(0) |
0

上一篇:ubuntu-server -防火墙 ufw

下一篇:没有了

给主人留下些什么吧!~~

chinaunix网友2010-10-26 18:51:08

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com