使用Spring和Axis运行Web服务:无法识别的方法

时间:2012-11-18 03:01:41

标签: web-services spring tomcat soap axis

我是一个基于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中运行它)

1 个答案:

答案 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