CXF的第一个例子helloWorld

公司要采用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文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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">
<display-name>scm</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ws-server-beans.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

</web-app>

4. 在src文件夹下建立文件ws-server-beans.xml(当然文件名随便取,只要与web.xml中引入的一致即可.
5. 编辑文件ws-server-beans.xml内容为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-autowire="byType" default-lazy-init="true">

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<jaxws:endpoint id="helloWorld"
implementor="com.genscript.scm.ws.impl.HelloWorldImpl" address="/HelloWorld">
</jaxws:endpoint>

</beans>

6.新建java package: com.genscript.scm.ws, 和java 类HelloWorld.java内容如下:
package com.genscript.scm.ws;

import javax.jws.WebService;

/**
* service interface
*
* @author
*
*/
@WebService
public interface HelloWorld {
String sayHi(String text);
}

7.新建包com.genscript.scm.ws.impl和类HelloWorldImpl.java内容为
package com.genscript.scm.ws.impl;
import javax.jws.WebService;
import com.genscript.scm.ws.HelloWorld;
@WebService
public class HelloWorldImpl implements HelloWorld {

@Override
public String sayHi(String text) {
// TODO Auto-generated method stub
System.out.println("java print: " + text);
return "Hi: " + text;
}

}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值