转自:http://haroldxie.iteye.com/blog/751519
当使用CXF作为WEBSERVICE的服务端,用AXIS进行调用的时候,发现与正常的WSDL文件缺少参数的定义和返回类型定义;需要在服务端的类中进行设置;如下:
@WebService
public interface HelloWorld {
@WebResult(name = "String")
String sayHello(@WebParam(name = "name") String name,
@WebParam(name = "sex") String sex);
void test();
}
@WebService
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String name, String sex) {
if ("F".equals(sex)) {
return "Hello," + name + "小姐";
}
if ("M".equals(sex)) {
return "Hello," + name + "先生";
} else {
return "Hello," + name;
}
}
public void test() {
System.out.println("only test for privilege!");
}
}
将类编写好后,只需要在服务端的配置中定义;如下:
<?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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<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" />
<bean id="hello" class="com.cigna.cmc.cxf.service.impl.HelloWorldImpl" />
<jaxws:endpoint id="helloWorld" implementor="#hello"
address="/HelloWorld">
<jaxws:inInterceptors>
<ref bean="ipInterceptor" />
<ref bean="saajInInterceptor" />
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="loggingOutInterceptor" />
</jaxws:outInterceptors>
<jaxws:inFaultInterceptors>
<ref bean="loggingInInterceptor" />
</jaxws:inFaultInterceptors>
<jaxws:outFaultInterceptors>
<ref bean="loggingOutInterceptor" />
</jaxws:outFaultInterceptors>
</jaxws:endpoint>
<bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
<bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" />
<bean id="ipInterceptor" class="com.cigna.cmc.spring.interceptor.IPInterceptor" />
<bean id="saajInInterceptor" class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
</beans>
这样服务端的所有设置就都完成了,在客户端进行调用时,采用AXIS的方式,如下:
public class TestHelloWorld {
public static void main(String[] args) throws Exception {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress("http://localhost:8080/CFXDemoServer/services/HelloWorld");
call.setOperationName("sayHello");
call.addParameter("name", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("sex", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
System.out.println(call.invoke(new Object[] { "harold!","l" }));
}
}
通过这种方式,客户端不需要关心服务端采用了哪种实现方式!
分享到:
相关推荐
在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何创建和调用Web服务。 1. **CXF框架介绍**:CXF,全称为"Code first eXtended Framework",最初由XFire项目发展而来,后与Apache ...
本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...
以上步骤详细介绍了如何使用Spring 3 + CXF 3.4搭建WebService服务端,并通过Axis 1.4客户端进行调用的过程。通过这种方式,可以实现不同技术栈之间Web服务的有效交互。在实际应用中,还需要注意安全性和性能优化等...
本文将详细介绍如何通过四个步骤完成WebService服务端与客户端的调用。 步骤一:创建WebService服务端 1. 选择开发工具:首先,你需要一个支持WebService开发的集成开发环境(IDE),如Eclipse或IntelliJ IDEA。以...
在本Demo中,可能使用了Apache CXF、 Axis等开源框架来简化服务端的开发工作,这些框架自动处理SOAP消息的编码和解码,以及错误处理等复杂任务。 4. **跨语言支持** - WebService的XML基础使其具有跨语言的特性,...
在本实例中,服务端可能包含了使用Axis创建的WebService接口定义、服务实现类以及部署描述符文件(如wsdd)。客户端则可能包含了调用这些服务的代码,这通常涉及到生成客户端代理类,通过Axis工具自动生成,这些代理...
假设你已经下载了一个名为`webservice`的压缩包,里面可能包含了Axis2和CXF的相关jar包,以及示例代码或者配置文件。要创建一个基本的Web服务,你需要按照以下步骤操作: 1. **创建服务接口**:定义一个Java接口,...
与 Axis2 和 JBossWS 等其他WebService框架相比,CXF在性能、易用性和社区支持方面都有优势。CXF的API设计更加直观,且其对REST的支持使其在现代Web开发中更具竞争力。 **七、最佳实践** 1. **保持WSDL清晰简洁**...
- **WSDL到Java**:从服务端获取WSDL文件,使用CXF或Axis提供的工具将其转换为Java客户端代码,然后在自己的应用中引入这些生成的类来调用服务。 - **动态代理**:对于CXF,可以通过JAX-WS API动态生成客户端代理...
使用Axis调用WebService时,你需要先下载Axis的二进制包,然后通过WSDL(Web服务描述语言)文件生成客户端存根类。这些存根类提供了与服务交互的方法,使得开发者可以像调用本地方法一样调用远程服务。 2. CXF:...
3. "java 调用webservice的各种方法总结 - 比较详细且简单的.mht":这个文件应该汇总了多种Java调用Web服务的方法,比如使用JAX-WS、Apache CXF或Axis2等库,可能包括代码示例和优缺点分析。 4. "java调用...
- **客户端支持**:CXF提供客户端API,允许开发者创建Web服务客户端,与服务端进行交互。 - **绑定支持**:CXF支持多种绑定,包括JAX-WS(Java API for XML Web Services)、JAX-RS(Java API for RESTful Web ...
1. **服务端创建**:使用Axis2,开发者可以轻松地将Java类转换为Web Service。通过编写Java代码,定义服务接口,然后使用Axis2工具生成服务部署描述符(WSDL),最后将服务部署到服务器上。 2. **客户端调用**:...
这个工程示例展示了如何使用 CXF 框架来实现 WebService 调用和解密程序。以下是关键知识点的详细说明: 1. **CXF 框架基础**:CXF 是一个全方位的服务框架,它集成了 Apache SOAP、Axis 和 Neethi 等项目,提供了...
Java WebService客户端和服务端生成工具是用于简化Java开发者在创建和调用Web服务时工作的实用程序。这些工具自动生成所需的代码框架,使开发者能够快速地与WebService进行交互,而无需手动编写大量的XML Schema...
接着,你可以编写服务端和客户端代码,通过CXF提供的API来创建、发布和调用WebService。这个过程将帮助你直观地理解CXF如何实现服务的发布和调用。 总的来说,Apache CXF是一个强大且灵活的框架,适用于构建和消费...
然后,创建一个实现此接口的类,使用WebServiceTemplate进行实际的Web Service调用。 ```java public interface YourWebService { YourResponseType callYourService(YourRequestType request); } @Service ...
为了在CXF客户端中使用这个适配器,我们需要在服务接口的方法签名中使用`@XmlJavaTypeAdapter`注解,将适配器类与Map参数关联起来,这样CXF在处理数据时就会自动调用适配器进行转换。 在服务实现类中,`@WebService...
总结起来,本实例主要介绍了使用Apache Axis1创建和调用Java Web Service的基本流程,涉及的关键点包括WebService的基本概念、Axis1的使用以及服务的部署和调用。对于初学者,这是一个很好的实践起点,有助于理解Web...
本文将详细介绍 WebService 的四种常见发布方式:CXF、XFire、Axis2 和 Axis1,并探讨如何通过客户端进行调用。 #### 二、CXF 方式 ##### 2.1 搭建环境 CXF 与 Spring 结合使用是当前流行的 WebService 构建方案之...