Eclipse安装CXF插件开发java web service 集成Spring



本文主要介绍在Eclipse[3.3.2]安装CXF插件。开发一个简单的java web service,以及和Spring的集成。 

安装插件: 

1,下载STP all_in_one,从http://ftp.daum.net/eclipse/stp/old-downloads-page/可以下载stp-all-in-one-incubation-0.7.0.200711162004.zip 

安装这个插件,可以用link文件的方式安装,可参考 http://blog.csdn.net/kkdelta/archive/2009/03/12/3983999.aspx 

2,下载CXF 运行环境所需的Jar包, 

http://people.apache.org/repo/m2-snapshot-repository/org/apache/cxf/apache-cxf/ 

我用的是 apache-cxf-2.1-incubator-20080414.232258-49.zip 


3,打开eclipse后,在菜单栏,windows-->preference-->soa tools 如下图,说明插件安装成功。 


4,配置CXF运行环境,如下图,installed Runtimes---- Add--Appach CXF 2.0--Next 指定解压缩后的apache-cxf-2.1-incubator-20080414.232258-49.zip的路径。 



开发Web Java Service 

1,新建一个web project,在 这个project里建立下面的interface: 

package com.test.cxf; 
public interface WSprovider { 
    public String testWS(String msgIn); 


然后在这个建好后的project上点右键,JAX-WS Tools ---Enable JAX-WS --java first programing mode, 选择运行cxf环境-- 选择新建的interface--finish。 

你的interface将被加上Java anotation如下: 

package com.test.cxf; 
import javax.jws.WebService; 
@WebService(name="WSprovider", targetNamespace="http://cxf.test.com/") 
public interface WSprovider { 
    public String testWS(String msgIn); 


2,在outline视图,选中testws(),右键选JAX-WX tools--〉create web method 

你的interface将被加上Java anotation如下: 

@WebService(name="WSprovider", targetNamespace="http://cxf.test.com/") 
public interface WSprovider { 
    @WebMethod(operationName="testWS", exclude=false) 
    @ResponseWrapper(className="com.test.cxf.TestWSResponse", localName="testWSResponse", targetNamespace="http://cxf.test.com/") 
    @RequestWrapper(className="com.test.cxf.TestWS", localName="testWS", targetNamespace="http://cxf.test.com/") 
    public String testWS(String msgIn); 




3,然后在project上点右键,JAX-WS Tools ---Generate All 

会生成interface的实现类如下: 

@WebService(endpointInterface = "com.test.cxf.WSprovider", serviceName = "WSproviderService")                      
public class WSproviderImpl implements WSprovider { 
    public java.lang.String testWS(java.lang.String arg0) {  
        ........ 
    } 




到此,简单的web service的开发就算完成了。 



集成Spring 

1,在WEB-INF下建立一个bean.xml文件: 

<?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.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" /> 

    <bean name="testService" class="com.test.cxf .WSCXFProviderImpl"/> 
    
    <jaxws:endpoint 
        id="testEndpoint" 
        implementor="#testService" 
        wsdlLocation="classpath:wsdl/prjCXFWeb.wsdl" 
        address="/WSCXFProviderPort"> 
        <jaxws:features> 
            <bean class="org.apache.cxf.feature.LoggingFeature"/> 
        </jaxws:features> 
    </jaxws:endpoint>      
</beans> 



2,对生成的wsdl文件修改: 

把 

<soap:address location="http://localhost:9090/WSproviderPort"/> 

改成 

<soap:address location="http://localhost:8080/prjCXFWeb/services /WSCXFProviderPort" /> 

在你的src下新建一个wsdl文件,把改后的wsdl copy到此【为了对应bean.xml中的wsdlLocation】。 



3,在web.xml中加入: 

  <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>WEB-INF/beans.xml</param-value> 
    </context-param> 
    <listener> 
        <listener-class> 
            org.springframework.web.context.ContextLoaderListener 
        </listener-class> 
    </listener> 
    <servlet> 
        <servlet-name>CXFServlet</servlet-name> 
        <servlet-class> 
            org.apache.cxf.transport.servlet.CXFServlet 
        </servlet-class> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>CXFServlet</servlet-name> 
        <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 



4,将web project发布到web container(e.g tomcat)中,web service便可以被调用了。 

在IE中输入 http://localhost:8080/prjCXFWeb/services /WSCXFProviderPort?wsdl,能看到wsdl文件,证明 

web service发布成功了。 





如果不和Spring集成,可以自己实现一个CXFNonSpringServlet的servlet,在web.xml中配置这个servlet来处理web service的请求. 

public class SimpleServlet extends CXFNonSpringServlet { 
    private static final long serialVersionUID = 1L; 

    public void loadBus(ServletConfig servletConfig) throws ServletException { 
        super.loadBus(servletConfig); 
        BusFactory.setDefaultBus(getBus()); 
        Object implementor = new WSCXFProviderImpl(); 
        Endpoint.publish("/p1", implementor); 
    } 




    <!-- not using Spring --> 
    <servlet> 
        <servlet-name>CXFServlet</servlet-name> 
        <servlet-class> 
            com.bt.cxf.ws.SimpleServlet 
        </servlet-class> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
        <servlet-name>CXFServlet</servlet-name> 
        <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 



在IE中输入 http://localhost:8080/prjCXFWeb/services /p1 ?wsdl,能看到wsdl文件,证明 

web service发布成功了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值