我是一个基于Spring的Web应用程序,我需要使用Axis公开Web服务。我跟着this guide,但服务仍然无法正常工作。 要恢复,我有一个像这样的EndPoint类:
package service;
import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
public class SpringWSEndPoint extends ServletEndpointSupport implements ISpringWS {
private ISpringWS springWS;
protected void onInit() {
this.springWS = (ISpringWS) getWebApplicationContext().getBean("springWS");
}
public String sayHello(String message) {
return springWS.sayHello(message);
}
}
和servlet映射如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>WSSpring</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>axis</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>axis</servlet-name>
<url-pattern>/axis/*</url-pattern>
</servlet-mapping>
</web-app>
因此,一旦我导航http://localhost:8080/myProject/axis/SpringWSEndPoint?wsdl
,就会出现一个(似乎正确的)自动生成的wsdl,正如预期的那样。
但是如果我转到http://localhost:8080/myProject/axis/SpringWSEndPoint/sayHello
,它就不会将其识别为服务方式(&#34;此网址没有提供服务&#34;)
我想我必须在任何.war或.aar文件中手动编译web服务...
由于
(我在tomcat中运行它)
答案 0 :(得分:1)
该服务将接受对http://localhost:8080/myProject/axis/SpringWSEndPoint
的POST请求,但不接受对http://localhost:8080/myProject/axis/SpringWSEndPoint/sayHello
的GET请求。 Axis 1.x不支持此请求样式。但是,它支持这样的东西(用于测试目的):http://localhost:8080/myProject/axis/SpringWSEndPoint?method=sayHello&message=test
。