webservice在中间件发布

本文介绍了如何在Tomcat中间件上发布Webservice。通过修改web.xml和配置服务文件,详细阐述了部署过程,并提供了遇到问题如BeanDefinitionParsingException的解决办法,包括检查CXF jar包的导入方式和版本选择,例如从apache-cxf-3.1.7切换到apache-cxf-2.7.18以解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章是通过main方法来发布及访问webservice,下面通过tomcat来发布,其实只需在上面基础上稍加修改即可:

 

 

1.web.xml文件

 

<display-name>TestCXF</display-name>
 
   <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>WEB-INF/cxf-service.xml</param-value> 
    </context-param> 
     
    <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener>  
 
 <servlet>
  <description>Apache CXF Endpoint</description>
  <display-name>cxf</display-name>
  <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>/services/*</url-pattern>
 </servlet-mapping>
 <session-config>
  <session-timeout>60</session-timeout>
 </session-config>

 

 

2. service配置文件:

 

 

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

 

 <jaxws:server id="jaxwsService" serviceClass="com.uu.service.IService" address="/test">
<!-- address为服务发布二级地址 完整地址为 /项目发布名称/cfx拦截地址/address   (cfx拦截地址在web.xml中url-pattern标签中配置) -->
 
       <jaxws:serviceBean>
 
     <!--    服务实现类  -->
 
            <bean class=" com.uu.service.impl.Service" />
 
       </jaxws:serviceBean>
 
   </jaxws:server> 
 

该文件几乎没变,只是顶上加了三行

 

 

 

3.部署进tomcat并启动测试:http://localhost:8080/TestCXF/services/test?wsdl

显示wsdl的xml文件及成功

 

注意点:

如果启动服务报错如下:

 

严重: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:META-INF/cxf/cxf-extension-soap.xml]

 

可能有两个原因:

一     该工程中的CXFjar包是通过userlibrary形式导入的,解决方案---全部导入web-inf的lib包中再导classpath即可

 

二    下载的jar包太新,里面没有cxf-extension-soap.xml文件,换成老的cxf版本重新导入项目,我测试时候用的apache-cxf-3.1.7  就不行,马上换了apache-cxf-2.7.18 测试通过

 

下面附上测试通过的jar包

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值