Axis2客户端由Spring提供

时间:2012-11-17 12:37:16

标签: web-services spring axis2 webservices-client

我有一个简单的Axis2客户端。我使用Spring作为轻型容器。 我的问题是:axis2客户与spring之间是否存在集成? 我在春天熟悉org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean课,但不知道它是否适用于axis2

1 个答案:

答案 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配置文件的地方,如下所示:

enter image description here

在上面的模式中,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;
    }