我正在使用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);
}
}
}
答案 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]
我没有提供代码中的每个细节。 希望这会有所帮助。