webservice CXF总结
Posted james_karon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice CXF总结相关的知识,希望对你有一定的参考价值。
1.Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。
2.
SOAP:
即简单对象访问协议 (Simple Object Access Protocol)
它是用于交换 XML (标准通用标记语言下的一个子集)编码信息的轻量级协 议
XML-envelope 为描述信息内容和如何处理内容定义了框架,将程序对象编 码成为 XML 对象的规则,执行远程过程调用 (RPC) 的约定。
XML-envelope—(code)- à XML
SOAP
可以运行在任何其他传输协议上
3.wsdl:
就是用机器能阅读的方式提供的一个正式描述文档而基于XML(标准通用标记语言下的一个子集)的语言,用于描述Web Service及其函数、参数和返回值。
命名空间要相同
4.CXF实现WebService:
• Apache CXF的官方网站如下:
1.先建立新的web project:
2.导入lib包
3. 根据wsdl文件反向生成服务端
• CXF提供了这样的工具----wsdl2java
配置CXF环境变量:
CXF_HOME=E:\\Java\\webservice\\apache-cxf-2.7.15,以及在path中增加 %CXF_HOME%/bin
注意:需要jdk 1.7以下,1.8会报错。使用wsdl2java -h可以检测是否成功。
•使用cmd 打开,到cxf/bin下:
然后在bin目录下生成代码:
• 然后需要修改一个地方,就是在接口的实现类中把
•wsdlLocation="file:/C:/Users/80575749/Desktop/OnePNS/SoapNotification.wsdl“
•给删除,不然等会运行是会提示找不到这个wsdl文件
4.把生成的代码复制进项目并创建applicationContext.xml配置文件:
注意:ScfMobileSoap.java 其实可以删除
添加配置内容
<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" />
<jaxws:endpoint id="ScfPccSoapService"
implementor="com.soap.ScfPccSoapServiceEndpointImpl"
address="/soap" />
</beans>
5.添加web.xml:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.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>
6.部署到Tomcat
5.CXF生成Client:
方法与生成Server类似:
在cmd中输入如下命令:
生成client代码
1. 导入lib包,把生成的java文件复制到client项目内
包与接口与服务端相同(只需要写接口)
Ps:包可以不相同,但是需要修改applicationContext.xml中的bean定义和接口实现类中的注解:endpointInterface的包路径
2.配置applicationContext.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.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"> <bean id="ScfPccSoap" class="com.soap.ScfPccSoapServiceEndpoint" factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.soap.ScfPccSoapServiceEndpoint"/>
<property name="address" value="http://localhost:8080/OnePNSServer/services/soap?wsdl"/>
</bean>
</beans>
3.写一个Run类来运行客户端:
4.关闭cxf的log Debug
<logger name="org.apache.cxf" level="warn" />
以上是关于webservice CXF总结的主要内容,如果未能解决你的问题,请参考以下文章
2021-05-14 WebService简介 CXF框架及其两种编程方式 JAVA