
正文
Java Maven项目使用CXF插件生成WebService代理
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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>
调用方法:
<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());
}
}
}







