我有一个简单的Axis2
客户端。我使用Spring
作为轻型容器。
我的问题是:axis2
客户与spring
之间是否存在集成?
我在春天熟悉org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean
课,但不知道它是否适用于axis2
。
答案 0 :(得分:0)
这link可以让您大致了解您需要做什么
首先,您需要从axis2端点生成存根代码。使用maven和axis2 maven插件是这样的:
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>${axis.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2code</goal>
</goals>
<configuration>
<wsdlFile>{axis2wsdl-url} or src/main/resources/wsdl/{downloaded wsdl file}</wsdlFile>
<packageName>com.cybersource.stub</packageName>
<databindingName>xmlbeans</databindingName>
</configuration>
</execution>
</executions>
</plugin>
接下来,您需要将生成的jar文件安装到maven存储库中。在您执行任何操作之前,您需要前往生成存根代码的位置并运行“ant”,它将生成所需的jar文件,您需要将它们安装到您的仓库中。
如果您使用的是Spring Boot,请添加以下两个bean:
@Bean
public ConfigurationContext getConfigurationContext() throws AxisFault {
ConfigurationContext ctx = ConfigurationContextFactory
.createConfigurationContextFromFileSystem(config.getAxisConfigLocation(), null);
return ctx;
}
@Bean
public Policy getOMElement() throws FileNotFoundException {
String policyLocation = config.getAxisConfigLocation() + "/conf/policy.xml";
InputStream in = new FileInputStream(policyLocation);
OMXMLParserWrapper omxmlParserWrapper = OMXMLBuilderFactory.createOMBuilder(in);
Policy policy = PolicyEngine.getPolicy(omxmlParserWrapper.getDocumentElement());
return policy;
}
您应该将config.getAxisConfigLocation()设置为您复制Axis配置文件的地方,如下所示:
在上面的模式中,axis2.xml对生成axis2上下文很重要。 policy.xml和rampart-xxx.mar文件用于身份验证,您需要知道服务器如何处理它。
在你的连接器部分,你需要注入ctx和/或策略bean并生成这样的存根:
@Autowired
ConfigurationContext ctx;
@Autowired
Policy policy;
private TransactionProcessorStub generateStub() throws AxisFault {
TransactionProcessorStub stub = new TransactionProcessorStub(ctx, config.getServerurl());
ServiceClient client = stub._getServiceClient();
Options clientOptions = client.getOptions();
clientOptions.setProperty(WSHandlerConstants.USER, config.getMerchantid());
clientOptions.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
client.setOptions(clientOptions);
client.engageModule("rampart");
return stub;
}