0

我有一个基于 Spring 的 Web 应用程序,我需要使用 Axis 公开一个 Web 服务。我遵循了本指南,但服务仍然无法正常工作。要恢复,我有一个这样的 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它不会将其识别为服务方法(“此 URL 上没有可用的服务”)

我想知道我必须以某种方式手动编译任何 .war 或 .aar 文件中的 web 服务......

谢谢

(我在tomcat中运行它)

4

1 回答 1

1

该服务将接受 POST 请求http://localhost:8080/myProject/axis/SpringWSEndPoint,但不接受 GET 请求http://localhost:8080/myProject/axis/SpringWSEndPoint/sayHello。Axis 1.x 不支持这种请求样式。但是,它支持这样的东西(用于测试目的):http://localhost:8080/myProject/axis/SpringWSEndPoint?method=sayHello&message=test.

于 2012-11-18T12:36:56.083 回答