首页 > 其他分享 >使用cxf3.0.4搭建webservice服务需要的最精简jar包

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

时间:2022-12-07 21:37:02浏览次数:30  
标签:rt webservice cxf3.0 jar 3.0 cxf apache org


        网上看了百度了好长时间,头都大了,还是没有把想要的最简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服务成功。


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






标签:rt,webservice,cxf3.0,jar,3.0,cxf,apache,org
From: https://blog.51cto.com/u_15905482/5920104

相关文章

  • 给你的SpringBoot工程打的jar包瘦瘦身
    Springboot默认方式打包由于打的是全量依赖包(也称为fat包),不但打包慢,体积大,传输也慢,今天教大家给springboot瘦瘦身。背景现在微服务架构越来越流行,一个项目10多个基于sprin......
  • SpringBoot使用maven打jar包配置
    在pom.xml文件中加入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>选择你自己的版本</ve......
  • 当我们的执行 java -jar xxx.jar 的时候底层到底做了什么?
    大家都知道我们常用的SpringBoot项目最终在线上运行的时候都是通过启动java-jarxxx.jar命令来运行的。那你有没有想过一个问题,那就是当我们执行java-jar命令后,到......
  • maven使用第三方jar包
    先安装第三方jar包到本地maven库mvninstall:install-file-DgroupId=com.huawei-DartifactId=sparkfilter-Dversion=1.1.0-Dpackaging=jar-Dfile=/opt/bigdata-idea......
  • maven从本地上传jar到伺服库
    mvndeploy:deploy-file-DgroupId=com.a.b-DartifactId=abc-Dversion=0.0.1-SNAPSHOT-Dpackaging=jar-Dfile=D:\abc-0.0.1-SNAPSHOT.jar-DpomFile=D:\abc-0.0.1-SNAPS......
  • java对接webservice服务实现推送
    【背景】  前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不......
  • webservice接口调用OA方法
    【背景】  最近一直在做这样一个需求,在OA中写一个webservice接口,通过调用OA中更新的方法来同步上级主管,我们公司的OA系统是买的产品,一无所知的我就这样开启了无悔......
  • 在docker中部署Jar包
    第一步制作Java的基础镜像1.在指定目录中添加 java.dockerfile文件内容如下:   以下是dockerfile文件内容#BaseimagesFROMopenjdk:8-jre-alpine#Author......
  • JDK的dt.jar和Java BeanInfo接口
    在JAVA_HOME/lib下面有两个比较重要的jar文件,tools.jar和dt.jar。 tools.jar在上篇文章中做了简单的介绍。这里来介绍下dt.jar。在Oracle官方网站搜dt.jar,找到JDKand......
  • maven打jar包到本地仓库
    maven打jar包到本地仓库:mvninstall:install-file-Dfile=jar包的位置(参数一)-DgroupId=groupId(参数二)-DartifactId=artifactId(参数三)-Dversion=version(参数四)......