CXF 和 axis都是非常不错的webservice的技术框架。最近项目需要了解了一下两个框架的访问。
首先说一下axis2客户端对axis2服务器的访问常用的两种方式:
1.用call方式
import org.apache.axis.client.Service;
import org.apache.axis.client.Call;
import javax.xml.namespace.QName;
public class TestClient {
public static void main(String[] args) {
try {
String name = "fei";
//服务发布地址
String endpoint = "####/service";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(endpoint);
//第一个参数是命名空间,第二个参数是调用的方法
call.setOperationName(new QName("http://**", "method"));
System.out.println(call.getTargetEndpointAddress());
String result = (String)call.invoke(new Object[]{name});
System.out.println(result);
} catch(Exception e) {
e.printStackTrace();
}
}
}
2.rpc调用方式
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class RPCClient
{
public static void main(String[] args) throws Exception
{
// 使用RPC 方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService 的URL
EndpointReference targetEPR = new EndpointReference(
"http://**/Service");
options.setTo(targetEPR);
// 指定访问 方法的参数值
Object[] ob = new Object[] {"fei"};
// 指定访问 方法返回值的数据类型的Class 对象
Class[] classes = new Class[] {String.class};
// 指定要调用的方法及WSDL 文件的命名空间
// QName 第一个参数为命名空间即文件中xschema中targetnamespace的值
QName qob = new QName("**", "method");
// 调用访问 方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(qob, ob, classes)[0]);
}
}
CXF客户端对对CXF服务器的访问,很简单。
JaxWsProxyFactoryBean jaxfactory = new JaxWsProxyFactoryBean();
jaxfactory.getInInterceptors().add(new LoggingInInterceptor());
jaxfactory.getOutInterceptors().add(new LoggingOutInterceptor());
jaxfactory.setServiceClass(*Service.class);
jax factory.setAddress("http://*/service?wsdl");
*Service client = (*Service)jax factory.create();
client.method("参数");
这里说的CXF客户端访问是不需要axis的类接口的,是通过动态创建客户端来实现的。
这里注意CXF中cxf版本和jaxb的版本匹配,否则会出现无法创建的错误java.lang.reflect.UndeclaredThrowableException等异常。
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
public class testClient {
private testClient() {
}
public static void main(String args[]) {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http:**/*service?wsdl");
Thread.currentThread().setContextClassLoader(cl);
try {
//invoke第一个参数是方法名称,第二个是参数
Object[] objects = client.invoke("method", "fei");
System.out.println("返回对象的长度:" + objects.length);
System.out.println(objects[0].toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
为了能够通过Axis 1.4客户端调用上面部署的WebService,需要对生成的WSDL文件进行一定的修改,使其符合Axis 1.4的要求。 **步骤四:修改WSDL文件** 1. **下载WSDL文件**:通过访问服务的WSDL URL将其保存为`...
【描述】"cxf-2.4.1+axis-1.4,整合spring3.0所用jar包"说明了这个压缩包的目的,即为开发者提供了一套完整的环境,用于在Spring 3.0框架下整合Apache CXF(一个开源的服务端和客户端Web服务实现)和Axis(一个用于...
在本场景中,我们关注的是Axis客户端如何调用需要身份验证的CXF服务。Axis是一个开放源码的SOAP栈,常用于创建和部署Web服务,而CXF则是一个更现代的Java框架,也用于构建和消费Web服务,支持WS-Security等高级特性...
cxf开发webservice客户端和服务器端 cxf(Apache CXF)是一款开源的WebService框架,用于开发webservice客户端和服务器端。它提供了许多有用的功能,如自动生成服务桩、客户调用桩和WSDL文档等,使得开发webservice...
可以使用CXF或Axis2提供的客户端工具,或者编写自己的Java代码。 6. **运行实例**:运行客户端,你应该能在控制台看到服务返回的“Hello, name”字符串。 理解并掌握Axis2和CXF的使用,对于开发和维护企业级的...
以下是一个CXF客户端代码示例,用于调用远程服务的方法: ```java public class CXFClientSample { public static void main(String[] args) throws Exception { JaxWsProxyFactoryBean factory = new ...
其次,Axis2同样是Apache的一个重要项目,它是一个全面的Web服务框架,集成了SOAP、WSDL等技术,能够生成Java和其他语言的Web服务客户端和服务器端代码。尽管其功能强大,但这也导致了Axis2的复杂性,可能不适合简单...
在本文中,我们将深入探讨WebService的原理以及如何利用Apache Axis和Apache CXF这两个流行的Java框架来实现和消费WebService。 首先,理解WebService的基础概念至关重要。WebService是一种通过互联网进行通信的...
### 使用Axis/CXF创建WebService详解 #### Axis/CXF概述 - **Axis**: 是Apache软件基金会提供的用于构建和调用Web服务的开源项目。 - **Axis2**: Axis的下一代产品,改进了性能并提供了更好的模块化架构。 - **CXF*...
Axis提供了一种简单的命令行工具,可以快速生成服务客户端和服务器端的代码。尽管较XFire和CXF稍显笨重,但Axis因其广泛的社区支持和丰富的教程资源而广受欢迎。 在使用这些框架时,开发者通常会遇到自定义对象的...
在IT行业中,Axis1.2和CXF框架是两个重要的Web服务开发工具,它们主要用于构建和部署SOAP(简单对象访问协议)服务。这两个框架都基于Java语言,为开发者提供了便捷的方式来实现服务接口,并且支持WS-I(Web服务互...
- 部署服务:将服务部署到AXIS服务器上。 - 客户端调用:使用AXIS客户端工具或者自定义代码调用服务。 【xfire篇】 XFire是另一个开源的SOAP和RESTful Web Services框架,后来被集成到了CXF项目中。XFire以其轻量...
`axis2-1.6.1-bin.zip` 和 `axis-bin-1_4.zip` 是Axis的版本,虽然不是CXF,但它们同样用于生成Web服务客户端和服务器端代码。 在DOS命令行下生成Web服务客户端代码,你需要先解压缩下载的CXF或Axis包,然后使用...
4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。通过修改CXF的配置文件,可以控制服务的行为,如端口号、绑定地址等。 5. **测试Web服务**:在提供的...
这可能包括创建一个简单的服务接口,编写服务实现,发布服务到服务器,以及生成客户端代码来调用这个服务。Axis的配置文件(如services.xml和pom.xml)也会包含在内,这些文件定义了服务的元数据和构建依赖。 而在...
- **生成服务器端代码**:利用工具(如Apache CXF、 Axis2等)根据WSDL生成Java服务类,实现服务的具体逻辑。 - **部署服务**:将生成的服务类部署到Web服务器或应用服务器上,使得服务对外可用。 - **生成客户端...
与XFire相似,客户端可以利用Axis的wsdl2java工具从WSDL文件生成客户端代码,然后通过这些代码访问Web服务。 4. XFireWSS: WSS(Web Services Security)是Web服务安全标准,用于确保Web服务的安全通信。XFireWSS...
6. **强大的调试工具**:CXF提供了客户端和服务器端的调试器,帮助开发者追踪和解决Web服务问题。 7. **集成其他Apache项目**:CXF与Apache Axis2、Tomcat、Jetty等项目有良好的集成,可以方便地嵌入到现有的应用...
- 可以使用 `jaxws:client` 标签来配置客户端,但也可以手动构造 URL 进行访问。 5. **发布服务:** - 将应用部署到服务器并测试 WSDL 的可用性。 #### XFire 方式 XFire 是一个早期的轻量级 Web 服务框架,...
在"axis2工程(服务于客户)和文档描述"的压缩包中,包含了使用Axis2部署的服务工程和CXF客户端的相关文档,这些资源将帮助你理解并实践上述知识点。通过阅读文档,你可以了解到具体的服务部署步骤、客户端调用方法...