使用CXF创建webservice非常简单,使用步骤如下:
服务端
1、创建接口
@WebService public interface HelloService { public @WebResult(name="msg")String sayHello(@WebParam(name="name")String name); }
2、创建接口的实现类
@WebService(endpointInterface="com.luo.service.HelloService",serviceName="helloService") public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { System.out.println("你好"+name); return "你好"+name; } }
3、为了将接口发布出去,在接口和实现类上加上@webservice注解
4、创建服务端发布webservice的主方法:一种是通过CXF内置的Jetty应用服务器发布(见方法一,二),一种是通过tomcat发布(见方法三)
方法一: 最简单,不需要额外的配置,使用sunjax-ws的Endpoint.publish()发布
public class MainServer2 { public static void main(String[] args) { Endpoint endpoint = Endpoint.publish("http://localhost:9000/hello",new HelloServiceImpl()); } }
方法二:用CXF的JaxWsServerFactoryBean类进行发布。(需要CXF相关包)
public class MainServer1 { public static void main(String[] args) { JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress("http://localhost:9000/hello");//设置发布地址 factoryBean.setServiceClass(HelloService.class);//设置接口 factoryBean.setServiceBean(new HelloServiceImpl());//设置接口的实现类 // factoryBean.getInInterceptors().add(new LoggingInInterceptor()); // factoryBean.getOutInterceptors().add(new LoggingOutInterceptor()); factoryBean.create();//发布 } }
方法三:spring结合cxf,通过tomcat发布(后面讲解)
5、然后访问http://localhost:9000/hello?wsdl查看wsdl报文xml
客户端:
6、客户端代码生成:根据wsdl,使用wsdl2java的命令行生成客户端代码
进入dos窗口,进入cxf下的bin目录下,使用:
wsdl2java -p com.luo.client -d E:/ http://localhost:9000/hello?wsdl
具体:
-p 指定其wsdl的命名空间,也就是要生成代码的包名; -d 指定要产生代码所在目录; -client 生成客户端测试web service的代码; -server 生成服务器启动web service的代码; -impl 生成web service的实现代码; -ant 生成build.xml文件;
7、调用web服务
方法一:
使用标准的sunjax-ws的api来完成客户端调用,不需要额外的配置和包
public class MainClient { public static void main(String[] args) throws MalformedURLException { QName qName = new QName("http://service.luo.com/","HelloService_Service"); HelloService_Service helloService_Service = new HelloService_Service(new URL("http://localhost:9000/hello?wsdl"),qName); HelloService helloService = helloService_Service.getPort(HelloService.class); helloService.sayHello("tom"); } }
方法二、用CXF中JaxWsProxyFactoryBean客户端代理工厂调用web服务(需要导入CXF相关包)
public class MainClient2 { public static void main(String[] args){ JaxWsProxyFactoryBean proxyFactoryBean = new JaxWsProxyFactoryBean(); proxyFactoryBean.setAddress("http://localhost:9000/hello"); proxyFactoryBean.setServiceClass(HelloService.class); HelloService helloService = (HelloService) proxyFactoryBean.create(); helloService.sayHello("tom"); } }
方法三:
public class MainClient3 { public static void main(String[] args) { Service service = Service.create(new QName("http://service.luo.com/")); service.addPort(new QName("http://service.luo.com/","HelloServiceImplPort") ,SOAPBinding.SOAP11HTTP_BINDING , "http://localhost:9000/hello"); HelloService helloService = service.getPort(HelloService.class); helloService.sayHello("tom"); } }
方法四:(需要导入CXF相关包)
JaxWsDynamicClientFactory dcf =JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Client client = dcf.createClient("http://127.0.0.1:8080/WSCXF/helloService?wsdl"); //sayHello 为接口中定义的方法名称 张三为传递的参数 返回一个Object数组 Object[] objects=client.invoke("sayHello","张三"); //输出调用结果 System.out.println(objects[0].toString());
8、CXF和Spring整合
8.1 添加jar
8.2 web.xml下添加cxf的servlet:将会过滤所有/services/*的url
<!-- CXF WebService --> <servlet> <servlet-name>CXFServlet</servlet-name> <display-name>CXF Servlet</display-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
8.3 到application-context.xml中添加3个地方:
<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" />
可以在原有配置文件上修改
8.4 创建webservice服务端的接口和实现类,平时使用的接口和类一样,只是添加了对应的注解
8.5 在applicaiton-context.xml中添加bean
<jaxws:endpoint id="helloworld" implementor="com.luo.HelloworldImpl" address="/helloworld"/>
8.6 编写客户端WebService的接口,这里还使用先前写的Hello.java
8.7 在spring的配置文件添加如下内容:
<jaxws:client id="helloClient" serviceClass="com.luo.IHelloworld" address="http://localhost:8080/cxfSpring/helloworld"/>
8.8 在代码用调用这个bean:
ServletContext sc = getServletContext(); WebApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc); Hello hello = (Hello) ac.getBean("helloClient"); String str = hello.say("zhang");
相关推荐
总的来说,"webservice使用cxf的实例"这个主题涵盖了从基础理论到实际操作的各个环节,包括CXF框架的使用、Web服务的创建与部署、客户端调用、数据绑定、安全性和Spring集成等多个方面。通过学习和实践,开发者可以...
**WebService之CXF服务端使用详解** 在信息技术领域,WebService是一种基于开放标准的,用于不同系统间进行数据交换的技术。Apache CXF是一个流行的开源框架,它使得开发和部署Web服务变得简单而高效。本篇文章将...
通过以上步骤,我们可以利用SpringBoot和CXF的强大功能快速构建和部署Web服务。在`springboot_wscxf`这个项目中,你应该能找到一个完整的示例,包括源代码、配置文件和运行指南,帮助你更好地理解和实践这一过程。...
总之,【WebService_CXF_x509】主题涵盖了使用Apache CXF框架与X.509证书进行安全Web服务交互的关键概念和实践步骤。通过理解和应用这些知识,开发者可以为他们的Web服务提供强健的加密和身份验证,保护数据免受未经...
使用CXF开发WebService通常包含以下步骤: - **定义服务接口**:创建Java接口,定义服务的方法。 - **创建服务实现**:实现接口中的方法,提供具体的服务逻辑。 - **生成WSDL**:使用CXF工具从接口生成WSDL,或者...
**四、CXF的使用步骤** 1. **定义服务接口**:编写Java接口,声明服务的业务方法。 2. **生成服务类和端点**:使用CXF的工具,如wsdl2java,从接口生成服务类和服务端点(SEI,Service Endpoint Interface)。 3. *...
6. **安全配置**:如果需要,还可以使用Spring Security或者CXF的安全模块来保护Web服务,实现身份验证和授权。 7. **监控和日志**:通过Spring的AOP支持,可以轻松地添加日志和性能监控功能。CXF也提供了各种监控...
在使用CXF调用Web服务时,通常会经历以下步骤: 1. **创建服务客户端**:首先,你需要有一个服务的WSDL(Web Service Description Language)文件,这是定义Web服务接口和消息格式的标准XML文档。CXF可以基于WSDL...
【标题】"webservice cxf_demo" 涉及到的是使用Apache CXF框架创建的Web服务示例项目。在Web服务的世界里,CXF是一个流行的开源工具,它支持SOAP和RESTful风格的服务,用于构建和消费Web服务。这个"CXF_demo"很可能...
1. "webservice12月31号课堂笔记.docx":这可能是一份详细的课程笔记,记录了关于Web服务和CXF-Spring整合的讲解内容,可能包括理论知识、步骤指导和关键点解析。 2. "ws_1231_cxf_spring_server":这可能是一个...
在CXF中,服务端的开发通常涉及以下步骤: 1. 定义服务接口:使用Java接口定义服务方法。 2. 实现服务接口:编写具体的业务逻辑。 3. 创建WSDL:CXF可以通过接口自动生成WSDL,或者手动编写。 4. 发布服务:使用CXF...
这篇博客文章“WebService之CXF(二、客户端的生成与调用)”将深入探讨如何使用CXF来创建和调用Web服务客户端。下面我们将详细解析这一主题。 首先,了解CXF的基本概念至关重要。CXF不仅支持SOAP(简单对象访问...
【CXF实现Web服务详解】 Web服务是一种通过网络进行通信的软件系统,它允许...通过阅读提供的“开发基于CXF的RESTFul Webservice.txt”文档和使用“apache-cxf-2.4.2.zip”中的库,你可以深入了解并实践CXF的使用。
【CXF的使用步骤】 1. **创建服务接口**:首先定义一个Java接口,该接口包含了服务的公共方法,这些方法将被暴露为Web服务操作。 2. **实现服务接口**:创建一个实现服务接口的类,提供具体的服务实现。 3. **...
【WebService CXF 使用详解】 WebService CXF 是一个开源框架,用于构建和开发符合 WS-* 标准的 Web 服务。它提供了丰富的功能,包括支持多种协议和服务风格,以及与 Spring 框架的深度集成。CXF 允许开发者轻松地...
本篇文章将详细探讨如何使用CXF框架来开发WebService客户端。 一、CXF简介 CXF是一个开源的Java框架,它支持构建和部署SOAP(简单对象访问协议)和RESTful(Representational State Transfer)Web服务。CXF提供了...
总结来说,利用CXF实现WebService涉及了多个步骤,从添加依赖到编写服务接口和实现,再到配置和发布服务。这个过程展示了CXF的强大功能,使开发者能够轻松地创建符合标准的Web服务。通过实践和学习提供的示例代码,...
**使用CXF实现WebService的步骤** 1. **创建WSDL**:首先,你需要编写一个描述服务接口的WSDL文件。WSDL定义了服务的端点、操作以及输入和输出的消息格式。 2. **生成Java类**:利用CXF的wsdl2java工具,根据WSDL...
以上就是Spring Boot整合Apache CXF实现Web服务的基本步骤。在实际项目中,可能还需要考虑安全性、异常处理、日志记录等更多细节。通过这种方式,Spring Boot项目可以作为一个高效的Web服务提供者或消费者,与其他...