使用cxf3.0.4搭建webservice服务需要的最精简jar包

简介: 使用cxf3.0.4搭建webservice服务需要的最精简jar包

网上看了百度了好长时间,头都大了,还是没有把想要的最简jar包找到,不是jar仍然很多,就是jar包少了,导致报错。无奈之下,自己花了一个下午,采用用逆推法,总结了下cxf3.0.4结合spring搭建webservice服务端的框架必需的最少jar包。


     方法很笨,但是很有效:直接先加载cxf3.0.4中lib下的所有jar包,结合spring搭建一个最简单的webservice服务框架。然后逐个删除项目下的cxf相关的jar包。


    下面是测试结果,只列出报错了的测试:


1、

org.apache.catalina.LifecycleException: A child container failed during start

缺少:

cxf-core-3.0.4.jar

(最核心的包,不多说)



2、

java.lang.ClassNotFoundException: org.apache.cxf.binding.soap.SoapBindingConfiguration

缺少:

cxf-rt-bindings-soap-3.0.4.jar

     (soap协议)



3、

org.apache.cxf.jaxb.JAXBDataBinding:

缺少:

cxf-rt-databinding-jaxb-3.0.4.jar



4、加载Application文件时出现

Unable to locate Spring NamespaceHandler for XML schema namespace
     [http://cxf.apache.org/jaxws]


缺少:

cxf-rt-frontend-jaxws-3.0.4.jar

(frontend 前置的意思,你懂的)


5、

org/apache/cxf/frontend/spring/ClientProxyFactoryBeanDefinitionParser错误:

缺少:

cxf-rt-frontend-simple-3.0.4.jar



6、

class path resource [META-INF/cxf/cxf-servlet.xml] cannot be opened because it does not exist

缺少:

cxf-rt-transports-http-3.0.4.jar



7、

org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://cxf.apache.org/transports/udp.

缺少:

cxf-rt-transports-udp-3.0.4.jar



8、

org.apache.cxf.ws.discovery.internal.WSDiscoveryServiceImpl startup

警告: Could not start WS-Discovery Service.

javax.xml.ws.WebServiceException: java.lang.NullPointerException

不能初始化配置的bean服务,也就是运行到<jaxws:server>时出错


缺少:

cxf-rt-ws-addr-3.0.4.jar


9、

java.lang.ClassNotFoundException: org.apache.cxf.ws.policy.AssertionInfoMap

缺少:

cxf-rt-ws-policy-3.0.4.jar



10、

java.lang.ClassNotFoundException: org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean

缺少:

cxf-rt-wsdl-3.0.4.jar


11、

java.lang.ClassNotFoundException: org.apache.neethi.AssertionBuilderFactory

缺少:

neethi-3.0.3.jar


12、

java.lang.ClassNotFoundException: org.slf4j.LoggerFactory

缺少:

slf4j-api-1.7.9.jar


13、

java.lang.ClassNotFoundException: org.apache.ws.commons.schema.resolver.URIResolver

缺少:

xmlschema-core-2.2.1.jar


所以,总结cxf3.0.4框架必需的包为:

cxf-core-3.0.4.jar
cxf-rt-bindings-soap-3.0.4.jar
cxf-rt-databinding-jaxb-3.0.4.jar
cxf-rt-frontend-jaxws-3.0.4.jar
cxf-rt-frontend-simple-3.0.4.jar
cxf-rt-transports-http-3.0.4.jar
cxf-rt-transports-udp-3.0.4.jar
cxf-rt-ws-addr-3.0.4.jar
cxf-rt-wsdl-3.0.4.jar
cxf-rt-ws-policy-3.0.4.jar
cxf-rt-wsdl-3.0.4.jar
neethi-3.0.3.jar
slf4j-api-1.7.9.jar
xmlschema-core-2.2.1.jar

注意:这里不包括spring依赖包和commoms下的jar包


引入CXF Bean定义如下,早期的版本中使用,如果是servlet引入的话则下面三句不用了,因为框架引入了

配置文件中不需要:

<import resource="classpath:META-INF/cxf/cxf.xml"/>
 <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
 <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />


<!-- scope="singleton"单例 -->
   <bean id="userServiceBean" class="com.winit.webservice.UserWebService">
   </bean>
    <!-- 注意下面的address,这里的address的名称就是访问的WebService的name --> 
    <jaxws:server id="userService" serviceClass="com.winit.webservice.IUserWebService" address="/Users">    
     <jaxws:serviceBean>         
         <!-- 要暴露的 bean 的引用 -->        
         <ref bean="userServiceBean"/>     
     </jaxws:serviceBean>     
   </jaxws:server>


web.xml中添加cxf的servlet


<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>/webservice/*</url-pattern>  
  </servlet-mapping>


项目名是 WebAdvanced,服务启动后,访问链接:

http://localhost:8080/WebAdvanced/webservice/Users?wsdl。说明发布的webservice服务成功。


最后,“尽信书则不如无书”,当你无路可走,没有好的思路时,最笨的方法,往往是最直接有效的方法。


目录
相关文章
|
5月前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
961 0
|
5月前
|
Java
[JarEditor]可直接修改jar包的IDEA插件
### 修改JAR包变得更简单:JarEditor插件简介 **背景:** 开发中常需修改JAR包中的class文件,传统方法耗时费力。JarEditor插件让你一键编辑JAR包内文件,无需解压。 **插件使用:** 1. **安装:** 在IDEA插件市场搜索JarEditor并安装。 2. **修改class:** 打开JAR文件中的class,直接编辑,保存后一键构建更新JAR。 3. **文件管理:** 右键菜单支持在JAR内新增/删除/重命名文件等操作。 4. **搜索:** 使用内置搜索功能快速定位JAR包内的字符串。
491 2
[JarEditor]可直接修改jar包的IDEA插件
|
5月前
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
监控 Ubuntu Java
如何在Ubuntu上运行Jar包?
【7月更文挑战第9天】
274 0
如何在Ubuntu上运行Jar包?
|
5月前
|
Java 应用服务中间件
tomcat7 与 tomcat8 加载 jar包的顺序
tomcat7 与 tomcat8 加载 jar包的顺序
183 0
|
5月前
|
Java 应用服务中间件 API
java 启动查看jar包加载顺序并设置classpath
java 启动查看jar包加载顺序并设置classpath
398 0
|
5月前
|
缓存 Java Maven
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
205 0
|
6月前
|
Java Shell Maven
使用Nexus上传JAR包的两种方法
使用Nexus上传JAR包的两种方法
3489 0

热门文章

最新文章