CXF整合spring,在tomcat中发布webService

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

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());
    }

}
时间: 2024-10-16 02:53:40

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

WebService框架CXF实战一在Tomcat中发布WebService(二)

服务接口及实现类请参考WebService框架CXF实战(一) 创建Maven Web项目,在pom.xml中添加CXF和Spring Web的引用,由于CXFServlet需要Spring Web的支持. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&quo

用JAXWS-RI在Tomcat中发布WebService

JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架,这两个框架各有优点,不过都属于重量级框架. JAXWS-RI是JAX WebService参考实现.相对于Axis2和CXF,JAXWS-RI是一个轻量级的框架.虽然是个轻量级框架,JAXWS-RI也提供了在Web服务器中发布Webservice的功能.官网地址https://jax-ws.jav

用JAX-WS在Tomcat中发布WebService

JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架,这两个框架各有优点,不过都属于重量级框架. JAX-WS RI是JAX WebService参考实现.相对于Axis2和CXF,JAX-WS RI是一个轻量级的框架.虽然是个轻量级框架,JAX-WS RI也提供了在Web服务器中发布Webservice的功能.官网地址https://jax-ws.

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

一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.18</version> </dependency> <de

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

一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.7.18</version> </dependency> <de

CXF整合Spring开发WebService

刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开环境变量配置窗口,点击新建,新建%CXF_HOME%变量,值为你下载的cxf所在的目录,我的是D:\tools\apache-cxf-3.1.0 2.在Path变量中新加一句%CXF_HOME%\lib,注意要和已有的path变量用;隔开 3.在CLASSPATH中新加一句%CXF_HOME%\li

【Java EE 学习第81天】【CXF框架】【CXF整合Spring】

一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一套开发WebService服务的标准.早期的标准如jax-rpc已经很少使用,而cxf就是在新标准jax-ws下开发出来的WebService,jax-ws也内置到了jdk1.6当中. CXF官方下载地址:http://cxf.apache.org/download.html 下载完成之后,解压开压

Apache CXF 整合Spring

一.创建一个 Java Web 工程,目录最终的结构如下图,下面我们将遂一说明: 二.把我们要用到的jar包全部放到lib目录下. 三.修改web.xml文件,整合CXF. <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2e

在tomcat中发布项目时,用IP地址不能访问项目而用localhost时可以访问成功

最近在开发项目中,遇到的一个问题是: 在 tomcat中发布一个web项目,但是发布成功后,只能用http://localhost:8080/fm访问项目,不能用 http://127.0.0.1:8080/fm访问项目,也不能用本地的IP地址访问(http://192.16/8.0.191:8080/fm) 起初认为是防火墙的原因,但是防火墙是关闭的,应该没有影响: 后来认为是win7的原因,那个远程那有个不允许远程访问,但是更改了都没有效果: 再后来认为是想原来tomcat6的时候,没有出现