2012-11-17 91 views
1

我有一個簡單的Axis2客戶端。我使用Spring作爲輕型容器。 我的問題是:axis2客戶端和spring之間是否有整合? 我在春天熟悉org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean類,但不知道它是否與axis2一起工作或沒有。Axis2客戶端由春

回答

0

link可以給你,你需要做

起初,你需要生成Axis2的端點存根代碼什麼的總體思路。使用Maven和Axis2行家堵漏是這樣的:

<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文件,你需要將它們安裝到你的repo中。

如果您在使用Spring啓動添加這兩種豆類:

@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()在某處複製軸配置文件是這樣的:

enter image description here

在上面的模式axis2.xml對於生成axis2上下文很重要。 policy.xml和rampart-xxx.mar文件用於身份驗證,您需要知道您的服務器如何處理它。

在你的連接器部分,你需要注入CTX和/或政策豆類和生成存根這樣的:

@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; 
    } 
+0

雖然這種聯繫可以回答這個問題,最好是在這裏有答案的重要部分並提供鏈接供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18048002) –