更改Axis Web服务的URL

时间:2014-03-25 04:45:37

标签: java web-services url webserver axis

我正在使用Axis创建Web服务,并在运行时使用AdminClient在运行时部署我的Web服务。运行我的java文件后,我可以使用此URL访问我的Web服务

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

我想知道如何在运行时更改使用axis部署的Web服务的URL。 我想将该网址更改为

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);
        } 
    }
}

3 个答案:

答案 0 :(得分:1)

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

要获得您想要的内容,您应该添加<parameter name="axis.servicesPath" value="/"/>

正如教程中所说:

  

Axis servlet的路径。这应该与服务相同   web.xml中定义的servlet-mapping。用于显示列表   服务。默认为&#34; / services /&#34;

您应该修改web.xml,如下所示:

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

答案 1 :(得分:0)

您可以在http://axis.apache.org/axis/java/reference.html

的wsdd文件中进行设置
<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>

答案 2 :(得分:0)

我将解释我在代码中是如何做同样的事情。 我有两个类:Publisher和Deployer。 -Publisher发布(创建WSDL等) - 我们提到了URL -Deployer将它们部署在发布者提供的URL上。

在Publisher中,我将URL(自定义)作为参数之一传递。

发布商代码: - 发布商类应扩展Java2WSDL 。它应该有一个arg构造函数,我们将设置自定义WSDL文件名,webservices的URL等。将这些元素添加到List中,并将列表作为参数传递给&#34; super.run(list )&#34;

要从其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 类。 要在&#34; super.process(列表)&#34;中传递的样本参数从它的main()方法: -

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

我没有提供代码中的每个细节。 希望这会有所帮助。