服务端

1、首先下载CXF的jar包 http://pan.baidu.com/s/1dFBwSRf 密码: qyax。里面自带了需要用到的spring的jar包.

或者使用maven,如下配置。不论使用哪种方式,均要注意版本问题,cxf3.1.2必须配置jdk1.7及以上版本。

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.2</version>
</dependency>

2、新建一个web项目,在这里我给它命名为cxfweb

3、将下载的jar包导入lib下,并build

4、在src目录下,新建两个包。com.yxf.controller,com.yxf.serviceImpl。

5、在src目录下,新建spring的配置文件。

<?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-4.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd"> <bean id="loginServiceImpl" class="com.yxf.serviceImpl.LoginServiceImpl" /> <!-- address就是服务访问的地址:http://localhost:8080/cxfweb/cxf/hello -->
<jaxws:server address="/hello">
<jaxws:serviceBean>
        //这个类需要配置注解@webService
<ref bean="loginServiceImpl"/>
</jaxws:serviceBean>
</jaxws:server> </beans>

6、在com.yxf.contoller包下新建一个servlet,这里我命名为LoginController。

7、在com.yxf.serviceImpl包下新建一个JOPO,这里我命名为LoginServiceImpl。(为了简单方便,这里就不通过接口)

8、项目整体结构如下

9、配置web.xml

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>cxfweb</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>yxf</servlet-name>
<servlet-class>com.yxf.controller.LoginController</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>yxf</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

//这里开始配置cxf。
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
//项目启动时启动
    <load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>cxf</servlet-name>
    //配置访问路径
<url-pattern>/cxf/*</url-pattern>
</servlet-mapping> </web-app>

10、给先前建立的LoginServiceImpl类,添加注解@webService。(如果要对wsdl进行配置,这里可以自行配置)

11、启动tomcat。

12、输入路径:我的是http://localhost:8080/cxfweb/cxf/。可见如下界面即配置成功

注意:上面截图时候spring的配置<jaxws:server address="/hello">路径没有带/,变成了localhost:8080/cxfweb/cxfhello。正确配置应添加/,则路径为cxfweb/cxf/hello。

wsdl地址应为:localhost:8080/cxfweb/cxf/hello?wsdl

下面也附上servlet和pojo里的内容

package com.yxf.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils; import com.yxf.bean.User;
import com.yxf.serviceImpl.LoginServiceImpl; /**
* Servlet implementation class Login
*/
public class LoginController extends HttpServlet {
private static final long serialVersionUID = 1L; private ApplicationContext context; private LoginServiceImpl loginServiceImpl; private volatile int count = 0; public LoginController() {} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("----------get---------------");
String username = request.getParameter("username");
String password = request.getParameter("password");
User u = new User(username,password, count+"");
System.out.println(u.toString());
loginServiceImpl.login(u);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} @Override
public void init() throws ServletException {
context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
loginServiceImpl = (LoginServiceImpl)context.getBean("loginServiceImpl"); } }
package com.yxf.serviceImpl;

import javax.jws.WebService;

import com.yxf.bean.User;

@WebService
public class LoginServiceImpl { public LoginServiceImpl() {
System.out.println("LoginServiceImpl is created");
} public void login(User user){
System.out.println("登录信息:");
System.out.println("用户ID--------------"+user.getId());
System.out.println("用户帐号--------------"+user.getUsername());
System.out.println("用户密码--------------"+user.getPassword());
} }

客户端

1、利用cxf生成客户端,需要先在官网下载工具,官网地址:http://cxf.apache.org/download.html ,进去后会见到如下内容,根据你的环境选择对应的下载文件。

2、下载文件后进行解压,解压后的目录如下,例如D:\apache-cxf-3.2.2

3、唤出运行窗口工具,进入解压文件的bin目录下,或者在系统环境的path中配置bin的目录。

4、执行命令“wsdl2java -p 本地包名 -d 本地src目录 -client -encoding utf-8 -noAddressBinding wsdl地址”

例如:wsdl2java -p com.yxf1 -d D://myeclipse2014Project/maventest/src -client -encoding utf-8 -noAddressBinding http://localhost:8080/sgy-web/cxf/ws?wsdl

执行以上命令后,客户端代码将会被自动生成。

5、调用接口,例如我的服务端接口实现类为SgyWsImpl,则客户端需要通过new SgyWslmplService().getSgyWsImplPort()来获得对象,然后通过对象调用想要调用的方法。

public class Main {

    public static void main(String[] args) {
SgyWsImplService service = new SgyWsImplService();
SgyWs sgy = service.getSgyWsImplPort();
sgy.sayHello();
}

CXF整合spring,在tomcat中发布webService的更多相关文章

  1. 用JAX-WS在Tomcat中发布WebService

    JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...

  2. WebService—CXF整合Spring实现接口发布和调用过程

    一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId> ...

  3. webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成

    首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...

  4. 【WebService】——CXF整合Spring

    相关博客: [WebService]--入门实例 [WebService]--SOAP.WSDL和UDDI 前言: 之前的几篇博客基本上都是使用jdk来实现WebService的调用,没有使用任何框架 ...

  5. CXF整合Spring开发WebService

    刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开 ...

  6. cxf整合spring中出现的错误

    Caused by: java.lang.ClassNotFoundException: javax.wsdl.extensions.ElementExtensible at org.apache.c ...

  7. 【Java EE 学习 81】【CXF框架】【CXF整合Spring】

    一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一 ...

  8. CXF整合Spring之JaxWsProxyFactoryBean调用

    1.见解 1.1 客户端的接口代码还一定要和服务端的接口代码一样,连注解都要一样,不够灵活 1.2 当客户端访问服务器的请求地址时,如果服务端没有对应的地址,就会报错,但是又没有cxf的异常捕获处理 ...

  9. 用JAX-WS在Tomcat中公布WebService

    JDK中已经内置了Webservice公布,只是要用Tomcat等Webserver公布WebService,还须要用第三方Webservice框架. Axis2和CXF是眼下最流行的Webservi ...

随机推荐

  1. node.js初识08

    1.模块的概念,在前端的世界里,jq和js的关系,在后台里就是express和原生node的关系, 2.每一个js里的函数都只在当前文件里起作用,如果你希望在其他js里调用这个函数,这么你需要在这个j ...

  2. [转-SSRF]什么是SSRF

    这些天专注了解了SSRF攻击(Server-side Request Forgery,服务器端请求伪造),对这类攻击有了自己的一些总结与看法,老外取这个名字是挺不错的,我很喜欢,这让我想到了CSRF( ...

  3. 获取PC硬件硬件序列号,唯一标识一台PC

    用一个库:jydisk.dll  百度说是windows提供的C++标准动态库,很方便使用. 点击连接下载文件,里面有各种语言的调用例子,可直接使用.测试多台机器,结果靠谱.没有遇到获取出来是全零的情 ...

  4. HDU 1251 统计难题(Trie)

    统计难题 [题目链接]统计难题 [题目类型]Trie &题解: Trie的模板题,只不过这题坑点在没给数据范围,改成5e5就可以过了,用的刘汝佳蓝书模板 &代码: #include & ...

  5. js中call,caller,callee,aplly

    1.函数的caller属性 (1).区分函数是在函数体调用还是顶层代码中调用:顶层中调用函数,该函数的caller属性返回null,在函数中调用,会返回调用发i函数的函数: <script> ...

  6. Ajax的重构

    Ajax的重构方法: (1)创建一个单独的JS文件,命名为AjaxRequest.js,并且在该文件中编写重构Ajax所需要的代码. var net = new Object(); //创建一个全局变 ...

  7. ActiveMQ之spring集成消息转换器MessageConverter

    MessageConverter的作用主要有两方面,一方面它可以把我们的非标准化Message对象转换成我们的目标Message对象,这主要是用在发送消息的时候:另一方面它又可以把我们的Message ...

  8. python -- 判断给定的参数是否是地理位置的经度和纬度

    例子: coordinates = "2.3,-8ui" 无效地理位置 coordinates = "2.3,-8i" 有效地理位置 方法一:使用try...e ...

  9. mac电脑使用,开发环境配置指南

    mac电脑使用,开发环境配置指南 前端工具链,mac下都很好用 用brew来装软件 用brew cask来装应用 Introduction · macOS Setup Guidehttp://sour ...

  10. LUHN 模10 算法 银行卡校验

    信用卡Luhn算法(模10)具体的校验过程如下: 1.从卡号最后一位数字开始,逆向将奇数位(1.3.5等等)相加. 2.从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去 ...