2014-03-25 134 views
3

我正在使用Axis創建Web服務,並在運行時使用AdminClient在運行時部署我的Web服務。運行我的Java文件後,我可以用這個URL更改Axis Web服務的URL

http://127.0.0.1:8099/axis/services/MyWebService . 

我想知道我怎麼能在運行時更改部署軸線我的web服務的URL來訪問我的web服務。 我想改變這種狀況網址爲

http://127.0.0.1:8099/MyWebService (OR) http://127.0.0.1:8099 . 

我怎麼能這樣做?有什麼建議?

這是我的代碼。

import java.io.FileInputStream; 
import java.io.InputStream; 
import java.net.ServerSocket; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import org.apache.axis.transport.http.SimpleAxisServer; 

public class AxisTest { 

    // start SimpleAxisServer 
    public AxisTest(){   
    } 
    public static void main(String[] args){ 
     try { 
      int port = 8099; 
      SimpleAxisServer server = new SimpleAxisServer(); 

      System.out.println("Opening server on port: "+ port); 

      ServerSocket ss = new ServerSocket(port); 
      ss.setSoTimeout(10000); 
      server.setServerSocket(ss); 

      server.start(); 
      System.out.println("Starting server..."); 

      // Read the deployment description of the service 

      String deploymenDescriptorFileName = "deploy.wsdd"; 
      InputStream deploymentDescriptorStream = new  FileInputStream(deploymenDescriptorFileName); 

      // Now deploy our web service    
      org.apache.axis.client.AdminClient adminClient; 

      adminClient = new org.apache.axis.client.AdminClient(); 

      System.out.println("Deploying receiver server web service..."); 
      String process = adminClient.process(
        new org.apache.axis.utils.Options(new String[] {"-ddd","-tlocal"}), 
        deploymentDescriptorStream); 
      System.out.println("Process : "+process); 
      System.out.println("Server started. Waiting for connections on: " + port); 

     } catch (Exception ex) { 
      Logger.getLogger(AxisTest.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 
+0

你有一個WSDL – Keerthivasan

+0

是的,我可以嗎?調用我的WSDL http://127.0.0.1:8099/axis/services/MyWebService?wsdl –

+0

然後,你可以在其中編輯服務的端點 – Keerthivasan

回答

0

你可以將它設置在WSDD文件,從http://axis.apache.org/axis/java/reference.html

<service name="MyServiceName" 
     provider="java:RPC" 
     style="rpc|document|wrapped" 
     use="encoded|literal" 
     streaming="off|on" 
     attachment="MIME|DIME|NONE"> 

<parameter name="className" value="org.apache.mystuff.MyService"/> 
<parameter name="allowedMethods" value="method1 method2 method3"/> 
<parameter name="wsdlTargetNamespace" value="http://mystuff.apache.org/MyService"/> 
<parameter name="wsdlServiceElement" value="MyService"/> 
<parameter name="wsdlServicePort" value="MyServicePort"/> 
<parameter name="wsdlPortType" value="MyPort"/> 
<parameter name="wsdlSoapActionMode" value="NONE|DEFAULT|OPERATION"/> 

<parameter name="SingleSOAPVersion" value="1.1|1.2/> 

<documentation>Service level info</documentation> 

<endpointURL>http://example.com:5050/my/custom/url/to/service</endpointURL> 

<wsdlFile>/path/to/wsdl/file</wsdlFile> 
<namespace>http://my.namespace.com/myservice</namespace> 
<handlerInfoChain>handlerChainName</handlerInfoChain> 

<operation ... /> 

<typeMapping ... /> 

<beanMapping ... /> 

</service> 
+0

我按照你的建議添加了端點,它在wsdl文件中被改變了但我無法訪問 –

+0

我按照 http:// localhost:8099/MyWebService的建議添加了端點,它也在wsdl文件中更改,但我無法訪問ht tp:// localhost:8099/MyWebService它顯示消息爲「AXIS引擎找不到要調用的目標服務! targetService爲空「 –

1

stringy05答案几乎是真實的。是的,你可以找到它here

爲了得到你想要的,你應該添加<parameter name="axis.servicesPath" value="/"/>

什麼,因爲它是在教程中說:

的路徑軸的servlet。這應該與web.xml中定義的服務 servlet-mapping相同。用於顯示 服務的列表。默認爲「/服務/」

你應該修改web.xml如下:

<servlet-mapping> 
    <servlet-name>AxisServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
0

,我將解釋如何,我做同樣的在我的代碼。 我有兩個類:發佈者和部署者。 -Publisher發佈(創建WSDL等) - 我們提到的URL -Deployer將它們部署在發佈商提供的URL上。

在發佈服務器中,我將URL(自定義)作爲參數之一傳遞。

發佈代碼: - 發佈者類應擴展Java2WSDL。它應該有一個arg構造函數,我們將設置自定義的WSDL文件名,Web服務的URL等。將這些元素添加到列表中,並將該列表作爲參數傳遞給「super.run(list)

樣品參數從它的main()方法Publisher.java的run()方法被傳遞: -

-o, D:\MyProject\WSAD\Workspace\Webservices\JavaSource\SampleWebserviceSpi.wsdl, -l, http://localhost:8086/Webservices/SampleWebserviceSpi, -y, WRAPPED, -u, LITERAL, -d, com.org.spi.ISampleWebserviceSpi, -P, SampleWebserviceSpi, -i, com.org.spi.SampleWebserviceSpi] 

所以,這是你可以發佈定製的Web服務。

現在要部署它們: - Deployer.java應擴展爲org.apache.axis.client.AdminClient類。 將在「super」中傳遞的示例參數。過程(名單)「從它的main()方法: - 。

[-l, http://localhost:8086/Webservices/servlet/AxisServlet, D:\MyProject\Workspace\Webservices\WebContent\wsdd\.\SampleWebservice.wsdd] 

我沒有在代碼中提供的每一個細節 希望這有助於