我在本地公司的服务器上启动并运行公司Web服务测试套件环境时遇到了一些困难,我收到了来自他们的2个war文件,这些文件已经部署在tomcat服务器上了。
该测试套件包含2个组件。
xmlvend-server.war
xmlvend-client.war
我可以访问服务器
http://localhost:8080/xmlvend-server
和客户端Web应用程序
http://localhost:8080/xmlvend-client
在服务器网页上,我收到以下消息:
协议测试服务器
这是xmlvend方案文件的协议测试服务器
在以下位置存储/读取:
C:\ Documents and Settings \ LocalService / xmlvend / test-server /
消息调用可以基于标准XMLVend 2.1 WSDL,
通过向以下端点地址发送POST请求:
http://127.0.0.1:8080/xmlvend-server/service
一切似乎都很好,但是当我单击端点地址(上方)时,出现以下错误/异常消息:
异常:javax.servlet.ServletException:无法获取
引用SOAP引擎
xmlhttp.framework.MessageReceiverServlet.init(MessageReceiverServlet.java:50)
根本原因:java.lang.Exception:上下文中没有SOAPProcessor
xmlhttp.framework.MessageReceiverServlet.init(MessageReceiverServlet.java:45)
如果尝试访问Web服务的wsdl文件(xmlvend-full-2.1.wsdl),则会收到与上述相同的异常。
我也从公司收到了wsdl,但应该放在哪里?
是否应将其放置在tomcat的webapps / test-server文件夹中?
有人可以告诉我如何使Web应用程序正常工作吗?
非常感谢任何帮助,我什至还配置了服务器以简化操作
VNC / RDP远程访问,如果可以帮助我,请与我联系。
谢谢
我的设置:
Tomcat服务器7.0.20
Java SDK / SE 7
Java版本1.4.2_03
Windows XP SP3
附加信息 :
服务器-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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 file:/Users/dawidl/Projects/solms/solmsRoot/externalResources/sun/xml/schemas/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>XMLVend Server (Web Services Testing Framework)</display-name>
<description>
A zero-business-logic web services server to perform protocol testing. All requests
with a URI of /service/* (and POST method) indicate web services (SOAP/HTTP) requests, the rest
are normal XHTML,etc/HTTP
</description>
<!-- Decodes any HTTP Requests sent using GZIP compression. Does so transparently,
so all components in the chain after it are unaware of the compressed request. This
is why the stupid Osmotic filter that follows prints out the annoying message
'request not compressed' even though it was originally (and we can't turn off
the printouts, because osmotic do not make their source available. -->
<filter>
<filter-name>HttpRequestCompressionFilter</filter-name>
<filter-class>xmlhttp.framework.io.HttpCompressionFilter</filter-class>
</filter>
<!-- Use off-the-shelf (Osmotic Web) Response Compression Filter (Supposed
to do two-way, but it's broken, which is why we wrote our own filter.-->
<filter>
<filter-name>HttpResponseCompressionFilter</filter-name>
<filter-class>com.osmoticweb.gzipfilter.GZIP2WayFilter</filter-class>
</filter>
<!-- Filter to cater for non-conforming user agents (read: MS Internet Explorer)
that do not understand the XHTML MIME type -->
<filter>
<filter-name>XHTMLMIMEFilter</filter-name>
<filter-class>za.co.solms.web.xhtml.MIMEFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpRequestCompressionFilter</filter-name>
<url-pattern>/service/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>HttpResponseCompressionFilter</filter-name>
<url-pattern>/service/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>XHTMLMIMEFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>MessageReceiver</servlet-name>
<servlet-class>xmlhttp.framework.MessageReceiverServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MessageReceiver</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jspx</welcome-file>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- Sets up the SOAP Engine and Processor(s) -->
<listener>
<listener-class>xmlhttp.framework.config.FrameworkSetupListener</listener-class>
</listener>
</web-app>
客户端-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="2.4">
<display-name>XMLVend Client (Web Services Testing Framework)</display-name>
<description>
A basic web services client to perform protocol testing.
</description>
<!-- Global web Service Parameters (Use-Case Centric) -->
<context-param>
<!-- Contract (each 'operation' name maps to a 'UseCase') -->
<param-name>service.wsdl</param-name>
<param-value>/contract/xmlvend-full-2.1.wsdl</param-value>
</context-param>
<context-param>
<!-- Views (contains files with naming convention: MyUseCase-[in|out].jspx) -->
<param-name>service.operations.views</param-name>
<param-value>/useCaseViews</param-value>
</context-param>
<!-- FIRST INSTALLATION DEFAULTS (overridden by the config file created in §xmlvend/test-client/configuration.properties) -->
<!-- TODO: Move this to a separate XML file in the format expected by the ConfigurationServlet -->
<context-param>
<param-name>init.xmlvend.transport.service.url</param-name>
<param-value>http://localhost:8080/xmlvend-server/service/</param-value>
</context-param>
<context-param>
<!-- Compress all requests? -->
<param-name>init.xmlvend.transport.compression.request</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<!-- Explicitly support compressed responses? -->
<param-name>init.xmlvend.transport.compression.response</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>init.xmlvend.client.clientID</param-name>
<param-value>6004708001981</param-value>
</context-param>
<context-param>
<param-name>init.xmlvend.client.clientIDType</param-name>
<!-- NOTE: The namespace prefix presented here *must* match with the prefix
defined in the message templates -->
<param-value>b0:EANDeviceID</param-value>
</context-param>
<context-param>
<param-name>init.xmlvend.client.terminalID</param-name>
<param-value>0000000000001</param-value>
</context-param>
<context-param>
<param-name>init.xmlvend.client.terminalIDType</param-name>
<!-- NOTE: The namespace prefix presented here *must* match with the prefix
defined in the message templates -->
<param-value>b0:EANDeviceID</param-value>
</context-param>
<context-param>
<!-- Automatically perform advice confirmation after each request? -->
<param-name>init.xmlvend.advice.autoConfirm</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<!-- Automatically perform advice reversal in the case of errors? -->
<param-name>init.xmlvend.advice.autoReversal</param-name>
<param-value>false</param-value>
</context-param>
<!-- Use-case handler (controller) servlet -->
<servlet>
<servlet-name>UseCaseServlet</servlet-name>
<servlet-class>za.co.eskom.nrs.xmlvend.client.UseCaseServlet</servlet-class>
</servlet>
<!-- Configuration view/update servlet -->
<servlet>
<servlet-name>ConfigurationServlet</servlet-name>
<servlet-class>za.co.eskom.nrs.xmlvend.client.setup.ConfigurationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UseCaseServlet</servlet-name>
<url-pattern>/useCase/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ConfigurationServlet</servlet-name>
<url-pattern>/admin/configuration</url-pattern>
</servlet-mapping>
<!-- Filter to make the global configuration keys available to every
request as string attributes -->
<filter>
<filter-name>ConfigurationProvider</filter-name>
<filter-class>za.co.eskom.nrs.xmlvend.client.setup.ConfigurationProviderFilter</filter-class>
</filter>
<!-- Filter to cater for non-conforming user agents (read: MS Internet Explorer)
that do not understand XHTML -->
<filter>
<filter-name>XHTMLMIMEFilter</filter-name>
<filter-class>za.co.solms.web.xhtml.MIMEFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ConfigurationProvider</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>XHTMLMIMEFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jspx</welcome-file>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- Sets up the client at start-up (configuration, etc) -->
<listener>
<listener-class>za.co.eskom.nrs.xmlvend.client.setup.ClientSetupListener</listener-class>
</listener>
<!-- SOAP Fault Error Page -->
<error-page>
<exception-type>za.co.eskom.nrs.xmlvend.client.SOAPFault</exception-type>
<location>/useCaseViews/_error-SOAPFault.jspx</location>
</error-page>
<!-- Any other (general) server errors -->
<!-- error-page>
<error-code>500</error-code>
<location>/useCaseViews/_error-generic.jspx</location>
</error-page-->
</web-app>
最佳答案
在服务器应用程序的web.xml中声明的上下文侦听器似乎应该设置提供错误的servlet所依赖的框架:
<!-- Sets up the SOAP Engine and Processor(s) -->
<listener>
<listener-class>xmlhttp.framework.config.FrameworkSetupListener</listener-class>
</listener>
看完源代码后,MessageReceiverServlet不能通过属性“ soap.engine”在Servlet上下文中找到SoapEngine。这应该由FrameworkSetupListener放在那里。
在应用程序服务器的日志中,应该有其他异常显示出此失败的原因(请检查tomcat安装目录/日志中名为catalina.out的文件)。
推测一下,我认为这很可能与您有关WSDL应该放置在哪里的问题有关。通过阅读源代码,应用程序期望(如果没有的话)在您的主目录下创建一个文件夹,因此请在主目录中查找名为“ xmlvend”的文件夹,然后放置所有.xsd / .wsdl文件在该“ / test-server / schemas”的子文件夹中。
完成此操作后,重新启动Tomcat应该会给您带来不同的结果。如果这样做不起作用,请从上述tomcat日志中添加一些摘录(异常堆栈跟踪最有用),它们应该提供更多线索。