`

webservice+cxf+spring

阅读更多

今天主要讲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

 

  • 大小: 22.1 KB
1
0
分享到:
评论
2 楼 jishiweili 2014-06-30  
1 楼 endual 前天   引用 删除
赞下。可否来个集成spring mvc

==============
最近在给学生培训 如果后面把xfire和axis2做了 我有时间就写个吧
1 楼 endual 2014-06-27  
赞下。可否来个集成spring mvc

相关推荐

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...

    使用Eclipse+Maven+Spring+CXF构建的WebService服务

    Web项目中基于Maven与Spring整合的WebService之cxf的实现⬇️ 详情请参考如下链接: https://locqi.github.io/locqi.com/2018/09/05/Eclipse+Maven+Spring+CXF-create-WebService/

    WebService+CXF+Spring+MySql+注解

    【CXF】:Apache CXF是一个开源的Java框架,主要用于构建和开发WebService。CXF支持多种协议和绑定,如SOAP、RESTful、XML/HTTP等,同时支持WS-*标准,如WS-Security、WS-ReliableMessaging等。它提供了一种简单的...

    spring4+mybatis3+webservice+cxf框架整合

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"spring4+mybatis3+webservice+cxf框架整合"就是一个典型的解决方案。这个项目结合了四个关键的技术组件,以构建一个强大的后端系统。 首先,Spring 4是Java...

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    标签:spring boot、mybatis、restful、WebService、CXF 知识点: 1. 数据库设计:在本实验中,我们使用Mysql数据库来存储数据,并使用schema.sql脚本文件来创建数据库和表结构。在application.yml配置文件中,...

    webservice+cxf+wss4j+spring

    在本示例中,"webservice+cxf+wss4j+spring"的整合过程可能包括以下步骤: 1. **设置Spring配置**:首先,我们需要在Spring配置文件中定义CXF服务端点和WSS4J的安全策略。这可能涉及到创建bean,如`...

    Spring+CXF+tomcat开发webservice

    这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端的实现。 **Spring** 是一个广泛使用的Java企业级应用开发框架,它提供了依赖注入(DI)...

    CXF2.1.3+spring3.0+struts2.3.4

    【标签】"CXF+spring WebService CXF"强调了这些组件的集成,特别是CXF作为Web服务的主要提供者,以及与Spring的紧密配合。CXF不仅可以用作服务提供者,还可以作为客户端来消费其他服务,这在Spring的管理下变得更加...

    idea + spring4.3.7.RELEASE+cxf3.1.0整合+客户端调用

    通过CXF的注解,如`@WebService`和`@WebMethod`,我们可以声明这是一个Web服务并定义其操作。 在服务器端,我们需要配置CXF的Servlet,以便处理HTTP请求。这通常在Spring的配置文件中完成,通过`&lt;jaxws:endpoint&gt;`...

    webservice+cxf基础笔记和视频,

    总的来说,这份“webservice+cxf基础笔记和视频”资源将引导你进入Web服务的世界,通过学习和实践,你可以掌握使用CXF和Spring进行Web服务开发的基本技能。无论你是初学者还是有一定经验的开发者,这都将是一份有...

    spring+srpingmvc+mybatis+cxf

    SSM框架是Java Web开发中常用的三大组件:Spring、SpringMVC和Mybatis的组合,它们各自负责不同的职责,协同工作以构建出高效、松耦合的Web应用程序。在这个项目中,开发者进一步集成了Apache CXF框架,用于发布Web...

    基于spring+cxf实现用户文件传输的webservice

    基于spring+cxf实现用户文件传输的webservice 在本文中,我们将探讨如何使用Spring+CXF实现用户文件传输的Webservice。该Webservice提供了基本的报文上传和查询功能,同时还提供了用户身份验证功能。 Spring 和 ...

    springboot+webservice+cxf

    &lt;artifactId&gt;cxf-spring-boot-starter-jaxws &lt;version&gt;3.4.x ``` 配置完成后,我们可以通过注解`@WebService`定义服务接口,比如创建一个天气查询接口: ```java @WebService public interface WeatherService ...

    mybatis+spring+cxf Webservice框架

    【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的技术组件:MyBatis、Spring和Apache CXF,用于构建高效、灵活且易于维护的Web服务。MyBatis是一个优秀的持久层框架,Spring...

    Spring+cxf请求webService

    【Spring+CXF请求WebService详解】 在Java开发领域,Spring框架以其强大的依赖注入和面向切面编程能力被广泛应用,而CXF则是一个优秀的开源服务开发框架,支持SOAP和RESTful服务。当Spring与CXF结合使用时,可以...

    spring+cxf 开发webservice

    【标题】"Spring+CXF 开发Web Service" 在Java世界中,开发Web服务的一个常见选择是使用Spring框架结合Apache CXF。Spring作为一个强大的轻量级框架,提供了丰富的功能,包括依赖注入、AOP(面向切面编程)以及企业...

    Spring + cxf = webservice 完整实例源码免费下载

    Spring + cxf = webservice 完整实例源码免费下载 完全免费。此资源仅为文档提供。 版权为百度文档 "Spring + cxf = webservice 完整实例源码免费下载" 所有。

    ibatis+spring+cxf+mysql搭建webservice的客户端

    ibatis+spring+cxf+mysql搭建webservice的客户端,文章地址在http://blog.csdn.net/cenyi2013/article/details/17315755. 服务端源码的下载地址在http://download.csdn.net/detail/cenyi2012/6712729

Global site tag (gtag.js) - Google Analytics