javax.servlet.ServletException: WSWS3142E: Error: Could not find Web services engine

javax.servlet.ServletException: WSWS3142E: Error: Could not find Web services engine

我正在通过 WAS7.0 发布 JAX-RPC Web 服务。我已经通过 RAD8.0 生成了骨架。 后代部署在本地并且工作得很好,因为我通过 Soap UI.

收到了想要的响应

现在我在我们的测试服务器中部署了 EAR,它启动正常并显示以下几行

[2/3/16 3:11:32:137 CST] 00000053 WebServicesSe W com.ibm.ws.webservices.engine.transport.http.WebServicesServlet setEndptMgrMBean WSWS4123E: Could not locate the Endpoint Manager MBean for com_service_mywebservices_MyServiceV1_0SOAPoHTTPImpl.
[2/3/16 3:11:32:137 CST] 00000053 ServletWrappe I com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I: [TIIS_ADE] [/TIIS/eAgent/Ade] [com_service_mywebservices_MyServiceV1_0SOAPoHTTPImpl]: Initialization successful.

部署后,当我尝试访问 WSDL 或通过 Soap 发送请求时 UI,出现此错误:

SourceId: com.ibm.ws.webcontainer.servlet.ServletWrapper.service
   ExtendedMessage: BBOO0220E: SRVE0014E: Uncaught service() exception root cause com_service_mywebservices_MyServiceV1_0SOAPoHTTPImpl: javax.servlet.ServletException: WSWS3142E: Error: Could not find Web services engine.
    at com.ibm.ws.webservices.engine.transport.http.WebServicesServlet.doPost(WebServicesServlet.java:1105)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at com.ibm.ws.webservices.engine.transport.http.WebServicesServletBase.service(WebServicesServletBase.java:344)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
    at com.mycompany.eagent.abc.app.service.CrossScriptingFilter.doFilter(CrossScriptingFilter.java:41)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:964

通过 Data Power 访问服务端点,但 Data Power 不托管任何 WSDL,它只是传递请求。

知道哪里出了问题....

我解决的问题:

Web.xml条目:

<servlet>
    <servlet-name>com_service_mywebservices_MyServiceV1_0SOAPoHTTPImpl</servlet-name>
    <servlet-class>com.service.mywebservices.MyServiceV1_0SOAPoHTTPImpl</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>com_service_mywebservices_MyServiceV1_0SOAPoHTTPImpl</servlet-name>
    <url-pattern>services/SOAPoHTTPEndpoint</url-pattern>
</servlet-mapping>

我已找到问题的根本原因并已修复。我做了几次点击和尝试的方法,终于找到了解决方案。

首先,这是一个一般性错误(javax.servlet.ServletException:WSWS3142E:错误:找不到 Web 服务引擎),它可能在多种情况下发生。在我的例子中,异常源自其他网络服务。有 2 个 Web 服务具有 url 模式 "services/MyWebService" 和 "services/OtherWebService"。 WAS 尝试解析 url 服务,它找到了 MyWebServices(The IMPL class) 但没有找到 OtherWebService 并抛出了这个通用异常。 为什么这个 OtherWebService 不可用?我重构了代码并将其移动到不同的文件夹结构中,因为一些常见的 xsd/files 存在冲突。所以 Web.xml 需要为 OtherWebService 修改,我没有修改,因为本地工作区不需要这个 WS 并从 Web.xml 中删除但是测试服务器的 web.xml 有那个条目所以它正在抛出错误。