0

我希望这个问题非常简单,只是我是个白痴。我是 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 应用程序上的设置有问题。

谢谢,

菲尔

4

1 回答 1

0

当您创建 soapui 测试请求时,它应该为您填充端点字段。

您还可以在绿色“I”图标下运行“示例请求”,至少可以测试您的端点。我不建议编辑这些以用作您的实际测试,但我认为很多人确实以这种方式使用 SoapUI。

“我请求请求”是什么意思?您应该能够右键单击绿色“I”下两个级别的测试请求,然后选择添加到测试用例。之后有几个对话框,您可以在其中采用默认值。它将创建一个 Junit 类型的结构:一个测试套件和一个测试用例。下面是测试步骤,您可以自己执行,也可以作为套件或测试用例的一部分执行。

编辑1:

对我来说这听起来不正常。不幸的是,除了简单的演示服务,我什么都没写,不过……

于 2012-09-18T18:14:50.103 回答