Веб-приложение Tomcat не работает - PullRequest
0 голосов
/ 13 сентября 2011

Я испытываю некоторые трудности при настройке и запуске среды набора тестов веб-служб компании на локальном сервере. Я получил от них 2 файла war, которые я уже развернул на своем сервере Tomcat.

Набор тестов состоит из 2 компонентов.

  1. xmlvend-server.war
  2. xmlvend-client.war

Я могу получить доступ к серверу

http://localhost:8080/xmlvend-server

и клиентское веб-приложение

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 Engine xmlhttp.framework.MessageReceiverServlet.init (MessageReceiverServlet.java:50)

основная причина: java.lang.Exception: нет SOAPProcessor в контексте xmlhttp.framework.MessageReceiverServlet.init (MessageReceiverServlet.java:45)

Если я пытаюсь получить доступ к файлу wsdl (xmlvend-full-2.1.wsdl) веб-службы, я получаю то же исключение, что и выше.

Я также получил wsdl от компании, но где мне его разместить? Должен ли он быть помещен в папку webapps / test-server на tomcat?

Может кто-нибудь сказать мне, как я могу заставить работать веб-приложение? Любая помощь высоко ценится, я даже настроил сервер для простого 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>

1 Ответ

3 голосов
/ 13 сентября 2011

Предполагается, что прослушиватель контекста, объявленный в файле web.xml серверного приложения, устанавливает платформу, на которой основан сервлет, выдающий вам ошибки:

<!-- Sets up the SOAP Engine and Processor(s) -->
<listener>
    <listener-class>xmlhttp.framework.config.FrameworkSetupListener</listener-class>
</listener>

Взглянув на исходный код,MessageReceiverServlet не может найти SoapEngine в контексте сервлета через атрибут «soap.engine».Это должно было быть помещено туда FrameworkSetupListener.

Должны быть и другие исключения, показывающие причину сбоя в журнале сервера приложений (проверьте каталог / logs установки tomcat на наличие файла с именем catalina.out).

Предположим, я думаю, что это, скорее всего, связано с вашим вопросом о том, где должны быть размещены WSDL.После чтения исходного кода приложение ожидает (и создает, если его там нет) папку в вашем домашнем каталоге, поэтому найдите в вашем домашнем каталоге папку с именем «xmlvend» и поместите все файлы .xsd / .wsdl.в подпапке этого "/ test-server / schemas".

После этого перезапуск Tomcat должен дать вам другие результаты.Если это не сработает, пожалуйста, добавьте некоторые выдержки (трассировки стека исключений наиболее полезны) из журналов tomcat, упомянутых выше, они должны дать больше подсказок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...