由于公司现在是.Net系统于Java系统并存,项目中难免需要跨平台的远程服务调用。最近刚好有一个项目需要Java Web系统调用.Net提供的WebService服务。权衡了下各个因素,最后决定使用 Apache CXF框架,没有用过的同学可以参考http://cxf.apache.org/.
废话不多说,上例子,方便大家参考,也给自己做个备份。
项目环境:Spring、Struts2、Ibatis、Maven
一、添加依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-aegis</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
二、定义接口
根据wsdl文件,创建对应的Java服务。
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://tempuri.org/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="AddUser">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="name" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="password" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddUserResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="AddUserResult" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
...
</wsdl:definitions>
package com.test.ws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService( targetNamespace="http://tempuri.org/" )
public interface TestService {
@WebMethod(operationName="AddUser")
@WebResult(targetNamespace="http://tempuri.org/",name=AddOrderResult" )
public int addUser(
@WebParam(name="name",targetNamespace="http://tempuri.org/")String name,
@WebParam(name="password",targetNamespace="http://tempuri.org/")String password);
}
三、配置服务
<bean id="testService" class="com.test.ws.TestService"
factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.test.ws.TestService"/>
<property name="address" value="http://192.168.1.101/Service/TestService.asmx"/>
<property name="bindingId" value="http://schemas.xmlsoap.org/wsdl/soap12/"/>
</bean>
完成以后,就可以像引用本地服务一样使用该远程服务了。
分享到:
相关推荐
1. **CXF_HELLO**: 这个项目可能是一个基础的“Hello World”服务,演示了如何使用CXF创建一个简单的Web服务,该服务可能接收一个字符串参数并返回相应的问候信息。 2. **CXF_HELLO_Object**: 此项目可能是对对象...
CXF webservice 入门视频 很清晰很不错,企业当中很多都在使用CXF
**WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行互操作。本篇将详细介绍如何使用Apache CXF框架来创建...
@WebService(endpointInterface = "com.example.cxf.helloworld.HelloWorld") public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String name) { return "Hello, " + name;...
这个"Apache CXF之helloworld"示例旨在帮助初学者理解如何使用CXF来创建和消费简单的Web服务。CXF允许开发者通过Java API(如JAX-WS和JAX-RS)来定义服务接口,并自动将其转换为HTTP服务。 首先,我们来了解一下CXF...
webservice-helloworld 视频 两台机器访问,一个是虚拟机。
webservice-helloworld 视频 两台机器访问,一个是虚拟机。 高清
在Java中,创建一个CXF WebService的"HelloWorld"示例通常涉及以下步骤: 1. 定义服务接口:使用Java语言定义一个简单的接口,例如`GreetingService`,其中包含一个返回"Hello, World!"的`sayHello()`方法。 2. 实现...
在我们的"helloWorld"项目中,可能包含了服务接口、实现类、配置文件以及可能的测试客户端代码。通过这个简单的DEMO,你可以了解到如何使用Apache CXF构建Web服务,并进行基本的交互。随着对CXF的进一步学习,你还...
这行配置告诉CXF使用`HelloWorldServiceImpl`类实现`helloWorld`服务,并将服务暴露在"/HelloWorld"路径下。 4. 创建并运行CXF服务:在Eclipse中,右键点击项目,选择Run As > Run on Server,选择合适的服务器实例...
【CXF Webservice 最简单的应用详解】 Apache CXF 是一个开源的 Java 框架,主要用于构建和开发 Web 服务。它提供了丰富的功能,包括支持多种 Web 服务规范,如 SOAP、RESTful API 和 JAXB,使得创建和消费 Web ...
接下来通过一个简单的“Hello World”示例来介绍如何使用CXF创建WebService。 1. **所需jar包**: - `cxf-rt-frontend-jaxws.jar` - `cxf-rt-transports-http.jar` - `cxf-rt-ws-security.jar` - `cxf-rt-...
@WebService(endpointInterface = "demo.spring.HelloWorld") public class HelloWorldImpl implements HelloWorld { public String stringInt(String text, int num) { System.out.println("stringInt called"); ...
@WebService(endpointInterface = "com.example.HelloWorld") public class HelloWorldImpl implements HelloWorld { public String sayHello(String name) { return "Hello, " + name; } } ``` - 创建完成...
org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:7002/card/services/HelloWorld?wsdl"); QName name = new QName("http://dao.xcf.digitalchina.com/", "sayHello"); String xmlStr =...
例如,对于上面的HelloWorldService,我们可以发送一个简单的GET请求到`http://yourserver/HelloWorldService/HelloWorld?wsdl`来获取服务的WSDL描述,然后创建一个SOAP请求进行调用。 6. **扩展与优化** SSH+CXF...
address="/HelloWorld"/> ``` 这里`id`是服务ID,`implementor`指定服务实现类,`address`是服务访问地址。 5. **部署和测试**:启动你的应用服务器(如Tomcat),CXF会自动扫描并发布Web服务。你可以使用CXF...
@WebService(endpointInterface = "com.example.HelloWorld") public class HelloWorldImpl implements HelloWorld { public String sayHello(String name) { return "Hello, " + name; } } ``` 4. **配置...
HelloWorld proxy = new HelloWorld_Service().getHelloWorldPort(); System.out.println(proxy.sayHello("World")); } } ``` ### 6. 运行客户端 编译并运行`ClientTest`,它将通过网络调用服务端的`sayHello`...
【描述】"cxf写的一个helloworld demo" 指出,此项目的核心是展示如何通过Apache CXF框架实现基础功能。"Hello World"程序通常被用作教学工具,帮助开发者理解新语言或框架的基本工作原理。在这个特定的场景中,我们...