今天主要讲3个方面的内容:
目录:
1:通过spring_cxf创建webservice。
2:通过CXF的wsdl2java创建java类。
3:客户端调用。
1:创建webservice
首先创建个maven-archetype-webapp项目,不会创建参考我博客spring_ssh.
其次在web.xml中添加spring容器监听配置和cxf配置。代码如下
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>webservice</display-name> <!-- springmvc 上下文监听器 ContextLoaderListener --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/*.xml</param-value> </context-param> <!-- springmvc 上下文监听器 ContextLoaderListener--> <servlet> <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFService</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> </web-app>
然后是配置spring.xml,spring中主要配置jaxws:endpoint,代码如下:
<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"> <bean id="bookServiceImpl" class="com.xiaoji.webservice.service.impl.BookServiceImpl"></bean> <jaxws:endpoint id="bookService" implementor="#bookServiceImpl" address="/bookService"> <jaxws:properties> <entry key="schema-validation-enabled" value="true"/> </jaxws:properties> <jaxws:dataBinding> <bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding"/> </jaxws:dataBinding> </jaxws:endpoint> </beans>
注解:jaxws:endpoint属性介绍,implementor是webservice接口实现类,address是wsdl访问路径地址还有一个是本地生成wsdl文件:wsdlLocation="wsdl/hello_world.wsdl"。
最后是添加webservice类和接口:
BookService.java
package com.xiaoji.webservice.service; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public interface BookService { //http://127.0.0.1:8080/webservice/ws/bookService?wsdl @WebMethod(operationName = "helloWebService") @WebResult(name = "result") public String helloWebService(@WebParam(name = "ws") String ws); }
BookServiceImpl.java
package com.xiaoji.webservice.service.impl; import javax.jws.WebService; import com.xiaoji.webservice.service.BookService; @WebService(endpointInterface = "com.xiaoji.webservice.service.BookService") public class BookServiceImpl implements BookService { public String helloWebService(String ws) { // TODO Auto-generated method stub return "hello webservice ,this is my first webservice. this is " + ws; } }
最后当然不能缺少pom.xml源码哦:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xiaoji.ssh</groupId> <artifactId>webservice</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>webservice Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>3.2.8.RELEASE</spring.version> <jdk.version>1.6</jdk.version> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-databinding-xmlbeans</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.0.0</version> </dependency> <!-- Jetty is needed if you're using the CXFServlet --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> <finalName>webservice</finalName> </build> </project>
大功告成,运行jetty,访问地址:http://172.16.141.55:8080/webservice/ws/bookService?wsdl,改成自己机子IP,OK.webservice-cxf-service就创建完成了
2:webservice的服务器端创建了,如何建立测试端呢,我查阅了很多资料,翻看了cxf源码,发现cxf里面有一个wsdl2java.bat,这是个好工具啊,可以根据wsdl链接地址生成客户端访问程序。当然最后也会把cxf-3.0.zip包共享出来。这节主要讲wsdl工具的使用:
(1):解压apache-cxf-3.0.0.zip,配置环境变量,CXF_HOME=cxf的解压路径,path添加%CXF_HOME%\bin,新建CLASS_PATH=.;%CXF_HOME%\lib,有CLASS_PATH的朋友直接添加%CXF_HOME%\lib,最后运行cmd,wsdl2java -v,显示出版本信息,配置成功,如下。
C:\Users\Administrator>wsdl2java -v
wsdl2java - Apache CXF 3.0.0
(2):运行wsdl2java -p com.xiaoji.webservice.service -d E:\Lynch\De
velop\workspace\eclipse4.3.0\webservicecxf\src\main\java -client http://172.16.1
41.55:8080/webservice/ws/bookService?wsdl,这里朋友们对wsdl2java 后面的参数肯定会有疑问
wsdl -p 打包 -d 生成JAVA文件存放路径 -client 是wsdl访问路径
这里要注意一点打包,是头文件里面ns1后面跟的链接反向就OK如: xmlns:ns1="http://service.webservice.xiaoji.com/;还有一点是java文件存放路径是我新建的一个maven-simple-project下的src/main/java下的路径,一切都准备就绪,在eclipse刷新客户端项目,会出现如下目录文件:
新建一个WebserviceCxfClient复制BookService_BookServiceImplPort_Client类中的代码运行,也可以直接运行BookService_BookServiceImplPort_Client,输出结果,淡然我个人觉的这个客户端类写的太复杂了,因为他用到main输入参数我简化了哈,代码如下:
package com.xiaoji.webservice.cxf.client; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import com.xiaoji.webservice.service.BookService; import com.xiaoji.webservice.service.BookServiceImplService; public class WebserviceCxfClient { private static final QName SERVICE_NAME = new QName("http://impl.service.webservice.xiaoji.com/", "BookServiceImplService"); public static void main(String[] args) throws MalformedURLException { URL wsdlURL = new URL("http://172.16.141.55:8080/webservice/ws/bookService?wsdl"); BookServiceImplService ss = new BookServiceImplService(wsdlURL, SERVICE_NAME); BookService bs = ss.getBookServiceImplPort(); { System.out.println("Invoking helloWebService..."); String ws = "小吉"; String result = bs.helloWebService(ws); System.out.println("helloWebService.result=" + result); } System.exit(0); } }
客户端pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xiaoji.webservice.cxf.client</groupId> <artifactId>webservicecxf</artifactId> <version>0.0.1-SNAPSHOT</version> <name>webservice-cxf-client</name> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-databinding-xmlbeans</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.0.0</version> </dependency> </dependencies> </project>
这样才符合自己的风格呵呵,下面我就上传源代码,为什么要先上传cxf呢,因为xfire好久没更新了,官网也很乱不好找资料。呵呵。
客户端也可以和spring通用哈,我这里只给出spring.xml的配置大家自己下来练习哈,
spring-client.xml:
<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"> <jaxws:client xmlns:s="http://apache.org/hello_world_soap_http" id="client" serviceClass="org.apache.hello_world_soap_http.Greeter" serviceName="s:SOAPService" endpointName="s:SoapPort" wsdlLocation="wsdl/hello_world.wsdl" address="http://localhost:9000/SoapContext/SoapPort"> <jaxws:properties> <entry key="schema-validation-enabled" value="true"/> </jaxws:properties> <jaxws:dataBinding> <bean class="org.apache.cxf.xmlbeans.XmlBeansDataBinding"/> </jaxws:dataBinding> </jaxws:client> </beans>
大家可以自己尝试哈,这里就不详细说了,感觉也没太大的难度了。
上传附件失败,只有给大家云盘地址了,如果该文章对你有帮助的话,回复鼓励下作者以后才有动力写相同类似文章。客户端和服务器源码已经上传,apache-cxf-3.0.0.zip云盘下载地址为:http://pan.baidu.com/s/1eQoZFsI,官网下载地址:
http://www.apache.org/dyn/closer.cgi?path=/cxf/3.0.0/apache-cxf-3.0.0.zip
相关推荐
简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...
Web项目中基于Maven与Spring整合的WebService之cxf的实现⬇️ 详情请参考如下链接: https://locqi.github.io/locqi.com/2018/09/05/Eclipse+Maven+Spring+CXF-create-WebService/
【CXF】:Apache CXF是一个开源的Java框架,主要用于构建和开发WebService。CXF支持多种协议和绑定,如SOAP、RESTful、XML/HTTP等,同时支持WS-*标准,如WS-Security、WS-ReliableMessaging等。它提供了一种简单的...
在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"spring4+mybatis3+webservice+cxf框架整合"就是一个典型的解决方案。这个项目结合了四个关键的技术组件,以构建一个强大的后端系统。 首先,Spring 4是Java...
标签:spring boot、mybatis、restful、WebService、CXF 知识点: 1. 数据库设计:在本实验中,我们使用Mysql数据库来存储数据,并使用schema.sql脚本文件来创建数据库和表结构。在application.yml配置文件中,...
在本示例中,"webservice+cxf+wss4j+spring"的整合过程可能包括以下步骤: 1. **设置Spring配置**:首先,我们需要在Spring配置文件中定义CXF服务端点和WSS4J的安全策略。这可能涉及到创建bean,如`...
这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端的实现。 **Spring** 是一个广泛使用的Java企业级应用开发框架,它提供了依赖注入(DI)...
【标签】"CXF+spring WebService CXF"强调了这些组件的集成,特别是CXF作为Web服务的主要提供者,以及与Spring的紧密配合。CXF不仅可以用作服务提供者,还可以作为客户端来消费其他服务,这在Spring的管理下变得更加...
通过CXF的注解,如`@WebService`和`@WebMethod`,我们可以声明这是一个Web服务并定义其操作。 在服务器端,我们需要配置CXF的Servlet,以便处理HTTP请求。这通常在Spring的配置文件中完成,通过`<jaxws:endpoint>`...
总的来说,这份“webservice+cxf基础笔记和视频”资源将引导你进入Web服务的世界,通过学习和实践,你可以掌握使用CXF和Spring进行Web服务开发的基本技能。无论你是初学者还是有一定经验的开发者,这都将是一份有...
SSM框架是Java Web开发中常用的三大组件:Spring、SpringMVC和Mybatis的组合,它们各自负责不同的职责,协同工作以构建出高效、松耦合的Web应用程序。在这个项目中,开发者进一步集成了Apache CXF框架,用于发布Web...
基于spring+cxf实现用户文件传输的webservice 在本文中,我们将探讨如何使用Spring+CXF实现用户文件传输的Webservice。该Webservice提供了基本的报文上传和查询功能,同时还提供了用户身份验证功能。 Spring 和 ...
<artifactId>cxf-spring-boot-starter-jaxws <version>3.4.x ``` 配置完成后,我们可以通过注解`@WebService`定义服务接口,比如创建一个天气查询接口: ```java @WebService public interface WeatherService ...
【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的技术组件:MyBatis、Spring和Apache CXF,用于构建高效、灵活且易于维护的Web服务。MyBatis是一个优秀的持久层框架,Spring...
【Spring+CXF请求WebService详解】 在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力被广泛应用,而CXF则是一个优秀的开源服务开发框架,支持SOAP和RESTful服务。当Spring与CXF结合使用时,可以...
【标题】"Spring+CXF 开发Web Service" 在Java世界中,开发Web服务的一个常见选择是使用Spring框架结合Apache CXF。Spring作为一个强大的轻量级框架,提供了丰富的功能,包括依赖注入、AOP(面向切面编程)以及企业...
Spring + cxf = webservice 完整实例源码免费下载 完全免费。此资源仅为文档提供。 版权为百度文档 "Spring + cxf = webservice 完整实例源码免费下载" 所有。
ibatis+spring+cxf+mysql搭建webservice的客户端,文章地址在http://blog.csdn.net/cenyi2013/article/details/17315755. 服务端源码的下载地址在http://download.csdn.net/detail/cenyi2012/6712729