CXF生成代理类插件名称:cxf-codegen-plugin
实现功能:
- 指定代理类所在的包
- 生成soapheader
操作:
eclipse中run as -> maven build -> goals -> generate-sources
pom.xml配置:
<build> <finalName>spring-demo01</finalName> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <!-- 生成代理类的目录 --> <sourceRoot>src/main/java</sourceRoot> <wsdlOptions> <wsdlOption> <!-- wsdl地址 --> <wsdl>wsdl address</wsdl> <!-- 指定代理类包名 --> <packagenames> <packagename>cn.yrm.ws</packagename> </packagenames> <!-- 是否生成soapheader --> <extendedSoapHeaders>true</extendedSoapHeaders> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
调用方法:
1、pom添加依赖
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.9</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency>
2、测试类
package cn.yrm.ws; import java.util.List; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class WebServiceInvokeTest { Logger logger = LoggerFactory.getLogger(WebServiceInvokeTest.class); private ProcessServiceSoap processService; private String address = "your endpoint address"; private MySoapHeader mySoapHeader; @Before public void testGenerateClient(){ JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(ProcessServiceSoap.class); factory.setAddress(address); // factory.setUsername("username"); // factory.setPassword("password"); processService = factory.create(ProcessServiceSoap.class); mySoapHeader = new MySoapHeader(); mySoapHeader.setUserName("your username"); mySoapHeader.setPassWord("your password"); mySoapHeader.setSystemId(3); } @Test public void testInvoke(){ WSResponseOfListOfProcessEntityDto dto = processService.getProcessInfo("epm", mySoapHeader); logger.info(dto.getReturnMsg()); ArrayOfProcessEntityDto processes = dto.getRet(); List<ProcessEntityDto> ls = processes.getProcessEntityDto(); for(ProcessEntityDto pe : ls){ logger.info(pe.getDisplayName()); } } }