我希望这个问题非常简单,只是我是个白痴。我是 SOAP 新手,正在尝试设置 SOAP WebService(使用 Java 和 Spring),然后使用 SoapUI 工具尝试向我的 Web 服务发送 SOAP 请求。但是,当我提交请求时,我总是收到 404 Not Found 错误。我怀疑/希望我刚刚在 SoapUI 中错误地设置了我的端点,但我不知道我应该在那里设置什么值。任何人都可以帮忙吗?
这些是我为使用 SOAP 支持设置我的 WebApp 所采取的步骤:
1)我正在使用在 Spring Tool Suite(基于 Eclipse)中运行并使用 Jetty 的现有 WebApp(具有现有 REST Web 服务)。在我的 web.xml 文件中,我添加了一个新的 SOAP Web 服务:
<servlet-mapping>
<servlet-name>SOAPWebService</servlet-name>
<url-pattern>/ws/SOAP/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SOAPWebService</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>transformWsdlLocations</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2)我创建了一个新类“ProjectSearchEndpoint”,它有一个@Endpoint 的注释。有效负载根 = @PayloadRoot(namespace = "http://FOO.FOO/foo", localPart = "ProjectRequest")
3)我将DSD添加到我的WebApp的WEB-INF中:ws-project.xsd
4) 我创建了一个名为 SOAPWebService-servlet.xml 的 servlet XML 文件,它引用了 DSD
<bean id="projectSearch" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
<property name="schema" ref="schema"/>
<property name="portTypeName" value="ProjectSearch"/>
</bean>
<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
<property name="xsd" value="/WEB-INF/ws-project.xsd"/>
</bean>
注意:端点代码和 DSD 来自博客:http: //javaclue.blogspot.co.uk/2012/05/soap-web-service-using-spring-ws-20.html我编辑了命名空间来制作它“http://FOO.FOO/foo”,但除此之外代码是相同的,尽管我添加了 System.out 行以显示对象何时被构造(它是)以及何时调用“searchProjects”方法(它从来不是)。
我可以成功启动我的 webApp,如果在我的浏览器中我导航到 URL:
http://localhost:8080/MyApp/ws/SOAP/projectSearch.wsdl
我可以看到 WSDL。到目前为止一切都很好。
当我使用 SoapUI 时,我会创建一个新项目并传入 WSDL。SoapUI 似乎很高兴。我请求一个请求,SoapUI 创建了一个带有我的 ProjectRequest 的 Soap Envelope。一切进展顺利!然而,要提交这个请求,SoapUI 需要一个 Endpoint。我认为我的终点是:
http://localhost:8080/MyApp/ws/SOAP/
但这只是返回 404 not found。尝试其他组合,例如
http://localhost:8080/MyApp/ws/SOAP/projectSearch
http://localhost:8080/MyApp/ws/SOAP/projectSearch?wsdl
http://localhost:8080/MyApp/ws/SOAP/ProjectRequest
所有结果都是 404。我的端点是什么?我应该为 SoapUI 赋予什么价值?
更新 1
为了清楚起见,这就是我在soapUI中所做的
启动soapUI 后,我创建了一个“新soapUI 项目”。名字是A1。初始 WSDL 是:
http://localhost:8080/MyApp/ws/SOAP/projectSearch.wsdl
在对话框中也勾选了“创建请求”。
我单击“确定”,它创建了一个 ProjectSearchSoap11(旁边有一个绿色的 I 图标),它下面有一个项目(红色箭头图标)和那个“Request1”(图标是 SOAP)。我右键单击 Request1 并选择“显示请求编辑器”。这将显示一个带有 SOAP 信封以及我的命名空间和 ProjectRequest 的窗口。这一切看起来都不错。
我现在想单击“向指定的端点 URL 提交请求”(左上角的绿色箭头),但在我指定端点(右侧)之前,它是灰色的。我单击端点下拉菜单并选择“编辑当前”。出现一个对话框。我输入:
http://localhost:8080/MyApp/ws/SOAP/
并单击确定。现在运行图标已启用(绿色)。单击此图标会导致出现“响应”窗口,该窗口为空白,但原始数据为:
HTTP/1.1 404 Not Found
Content-Length: 0
Server: Jetty(6.1.26)
我猜我选择的端点是错误的。您能否确认这是错误的格式,或者我缺少某种后缀。如果您认为它是正确的,那么一定是我在 Web 应用程序上的设置有问题。
谢谢,
菲尔