spring + cxf 集成开发 javawsdlcxfspringant
程序员文章站
2022-07-16 17:00:11
...
1. 使用 ant 根据 wsdl 文件生成 java 文件
<target name="cxf" depends="init"> <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true"> <arg value="-client"/> <arg value="-d"/> <arg value="${srcjava.dir}"/> <arg value="wsdl/xxx.wsdl"/> <classpath> <path refid="compile.classpath"/> </classpath> </java> </target> <target name="cxfjar" depends="cxf,compile"> <jar destfile="${lib.dir}/cxf-xxx.jar"> <manifest> <attribute name="Csapi-Built-By" value="${user.name}"/> <attribute name="Csapi-Build-Date" value="${today}"/> <attribute name="Csapi-Release-Tag" value="$Name: $"/> </manifest> <fileset dir="${build.dir}/chsi/WEB-INF/classes"> <include name="**/com/xxx/xxx/xxx/handlers/**"/> </fileset> </jar> </target>
2. 把生成的cxf java文件 放入 spring 容器中xxx-cxf.xml:
<bean id="xxxServiceFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="WSDL2JAVA生成的业务接口类"/> <property name="address" value="${xxx.wsdl.address}"/> </bean> <bean id="serviceXxxService" class="WSDL2JAVA生成的业务接口类" factory-bean="xxxServiceFactory" factory-method="create"/>
3.调用或组合webservice提供的方法 生成具体的业务方法:
<bean id="xxxService" class="com.xxx.xxx.XxxServiceImpl" parent="baseService"> <property name="itsXxxService" ref="serviceXxxService"/> <property name="interfaceClassName" value="XxxService"/> </bean>
注: 其中org.apache.cxf.jaxws.JaxWsProxyFactoryBean起到关键作用。
在其父类ClientProxyFactoryBean中设置了serviceClass和address属性,ClientProxyFactoryBean又代理(组合方法)了ClientFactoryBean类,ClientFactoryBean类的create()方法会生成需要的bean。
ClientProxyFactoryBean的create()方法中
Object obj = Proxy.newProxyInstance(clientFactoryBean.getServiceClass().getClassLoader(), getImplementingClasses(), handler);
其中handler就是由ClientFactoryBean类的create()方法会生成的。
解释了clientFactoryBean.getServiceClass():
public void setServiceClass(Class serviceClass) { clientFactoryBean.setServiceClass(serviceClass); }
利用clientFactoryBean.getServiceClass()、getImplementingClasses()生成了代理bean。
推荐阅读
-
Spring Boot与Spark、Cassandra系统集成开发示例
-
spring + cxf 集成开发 javawsdlcxfspringant
-
Spring集成CXF
-
Spring集成MyBatis进行项目开发(三)
-
Spring集成MyBatis进行项目开发(一)
-
Spring集成MyBatis进行项目开发(二)
-
Spring集成MyBatis进行项目开发(三)
-
Spring集成MyBatis进行项目开发(一)
-
【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
-
【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载