公司要采用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)服务端已经成功整合运行.
分享到:
相关推荐
本篇文章将深入探讨如何使用CXF来开发一个简单的“HelloWorld”Web服务实例。 首先,我们需要了解CXF的基本概念。CXF全称为CXF CXF (CXF on XFire),它整合了XFire和 Celtix两个项目,为开发者提供了一种灵活的方式...
【标题】"第一个Web服务(WebService)例子源码"提供了初学者深入了解和实践WebService开发的绝佳素材。在本文中,我们将深入探讨这个简单的"Hello World"程序如何工作,以及它如何帮助我们理解WebService的核心概念...
1. `helloWs`:这个可能是创建的第一个Web服务示例,"Ws"通常代表Web服务。它可能包含了一个简单的"Hello World"服务,展示了如何在CXF中定义和部署一个服务。 2. `helloWs1`和`helloWs2`:这些可能是对基础...
CXF允许开发者以编程或基于注解的方式创建Web服务,同时也支持WSDL(Web Service Description Language)第一类公民,可以从WSDL生成服务代码。 二、CXF与Webservice Web服务是一种通过网络进行通信的软件组件,它...
在这个例子中,`@Path("/hello")`注解定义了服务的URI路径,`@GET`表示响应GET请求,`@Produces(MediaType.APPLICATION_JSON)`则指定返回JSON格式的数据。 ### 4. 配置Spring整合CXF 在Spring配置文件中,我们需要...
address="/HelloWorld"/> ``` 6. **启动服务**:使用CXF的服务器容器(如Jetty或Tomcat)启动服务。这可以通过CXF的命令行工具或者在你的应用程序中手动调用服务器的启动方法完成。 7. **测试服务**:一旦服务...
此外,CXF还支持WSDL(Web Service Description Language)第一类公民,这意味着你可以从WSDL生成服务端和客户端的代码,反之亦然。这为开发者提供了极大的便利,特别是在处理第三方提供的Web服务时。 综上所述,...
1. **创建服务**:创建一个Java类,包含一个返回“Hello World”的方法。 2. **生成WSDL**:使用Apache CXF或其他工具生成对应的服务WSDL文件。 3. **部署服务**:将服务类和WSDL文件放在Axis2的services目录下。 4....
在这个例子中,我们创建了一个名为 "HelloWorld" 的服务,其命名空间为 `http://www.boshk.com/HelloWorld`,并指定了服务接口和实现类。 完成配置后,可以通过访问 `...
3. **HelloWorld** - 这可能是一个包含"HelloWorld"示例的目录或文件,通常用于展示基础的Web Service创建过程,读者可以通过运行和分析这个例子来学习基本概念。 4. **webServicesClient** - 这可能是另一个示例,...
在这个"HelloWorld"的例子中,可能是一个简单的登录或注册功能,Android客户端发送用户名和密码到Web Service,然后Web Service验证这些信息并返回结果。Android应用会根据返回的结果进行相应的操作,比如显示登录...
这个文件名可能指的是一个示例项目或者教程中的第一个例子。"xfireDemo1"可能包含了一个简单的XFire Web服务的源代码、配置文件和运行说明,供读者下载并跟随操作,以理解XFire的工作原理。 详细知识点: 1. **...
例如,可以创建一个简单的"Hello World"服务,通过编写XML配置文件和服务接口实现服务发布,然后使用预生成的客户端代码调用服务。 三、Web Service实例应用 1. **服务端创建**:使用Axis2,开发者可以轻松地将...
在这个例子中,`@Path("/hello")`定义了资源的路径,`@GET`表示使用HTTP的GET方法,`@Produces(MediaType.TEXT_PLAIN)`指定了返回的数据类型为纯文本。 除此之外,"REST的全部jia包"可能还包括JSON处理库,如...