Ошибка AXIS: в этом месте нет службы SOAP - PullRequest
6 голосов
/ 10 января 2012

Примечание: Мне не удалось найти прямой ответ на эту проблему, поэтому я приведу свое решение ниже в качестве ответа.

Я создал серверную часть веб-службы на стороне сервера.из WSDL с использованием Axis 1.4 и axistools-maven-plugin.Сервлет Axis сопоставлен с /services/*, служба настроена в WEB-INF/server-config.wsdd следующим образом:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="TestService" style="document" use="literal">
        <namespace>http://example.com/testservier</namespace>
        <parameter name="className" value="com.example.TestServiceImpl"/>
        <parameter name="allowedMethods" value="*"/>
        <parameter name="scope" value="Session"/>
    </service>
</deployment>

При развертывании этого веб-приложения в Tomcat и доступе к http://localhost:8080/testservice/services возвращается список развернутых служб.

А теперь ... Некоторые службы

  • TestService (wsdl)
    • TestService

При нажатии wsdl должно появиться описание этой службы, но появляется следующая страница ошибки:

Ошибка ОСИ

Не удалось сгенерировать WSDL!

В этом месте нет службы SOAP

Ответы [ 5 ]

9 голосов
/ 10 января 2012

В server-config.wsdd отсутствует необходимая настройка конфигурации.

<transport name="http">
    <requestFlow>
        <handler type="java:org.apache.axis.handlers.http.URLMapper"/>
    </requestFlow>
</transport>

Кажется, URLMapper отвечает за извлечение имени службы из URL, без которой ось не знает, какую службу вызывать,Это как-то задокументировано в оси faq :

Этот механизм работает, потому что транспорт HTTP в Axis имеет URLMapper (org.apache.axis.handlers.http.URLMapper)Обработчик развернут в цепочке запросов.URLMapper принимает входящий URL-адрес, извлекает последнюю часть в качестве имени службы и пытается найти службу по этому имени в текущей конфигурации Engine.

Аналогичным образом можно развернуть HTTPActionHandler для отправки через SOAPAction.HTTP заголовок.Вы также можете свободно настраивать службу по своему усмотрению - например, если у вас есть транспорт, который направляет все сообщения через одну службу, вы можете просто установить службу в MessageContext до того, как ваш транспорт вызовет AxisEngine

Похоже, что URLMapper будет настроен по умолчанию, что, похоже, не так.

1 голос
/ 25 августа 2016

Когда у меня возникла эта проблема, она была вызвана использованием неправильного URL.

Я использовал http://localhost:8080/axis/services/AdminWebService?wsdl вместо http://localhost:8080/axis/services/AdminService?wsdl.

AdminWebService должен быть изменен на AdminService.

0 голосов
/ 05 мая 2016
  • вы гарантируете server-config.wsdd в вашем пакете, вы можете поместить этот файл в ресурсы или вы можете установить в вашем pom.xml через maven, какие файлы будут в пакете
  • server-config.wsdd должен быть допустимым и иметь правильные теги или необходимая конфигурация, поэтому в ней должны быть строки ниже;
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>

<handler type="java:org.apache.axis.transport.local.LocalResponder" name="LocalResponder" />

<transport name="http">
    <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler" />
    <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler" />
    <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler" />
    <requestFlow>
        <handler type="URLMapper" />
        <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
    </requestFlow>
</transport>
<transport name="local">
    <responseFlow>
        <handler type="LocalResponder" />
    </responseFlow>
</transport>
0 голосов
/ 04 сентября 2014

У меня недавно была такая же проблема.

Решение: В моем случае я использовал Axis 1.4 и развертывал приложение на tomcat.Однако по какой-то причине сгенерированный server-config.wsdd не был упакован во время войны и, следовательно, не был развернут на Tomcat.Однажды я убедился, что это происходит, и у меня все заработало.

0 голосов
/ 01 августа 2012

Вам лучше создать server-config.wsdd автоматически с целью "admin".См. Документацию по этому плагину:

http://mojo.codehaus.org/axistools-maven-plugin/admin-mojo.html

Очень сложно сгенерировать server-config.wsdd вручную.

Пример:

<build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>axistools-maven-plugin</artifactId>
                    <version>1.3</version>

                    <configuration>

                        <filename>${project.artifactId}.wsdl</filename>
                        <namespace>http://server.ws.xxx</namespace>
                        <namespaceImpl>http://server.ws.xxx</namespaceImpl>
                        <classOfPortType>XXXWebService</classOfPortType>
                        <location>http://localhost:8080/XX/services/XXXWebService</location>
                        <bindingName>XXServiceSoapBinding</bindingName>
                        <style>WRAPPED</style>
                        <use>literal</use>


                        <inputFiles>
                            <inputFile>${basedir}\src\main\webapp\WEB-INF\xxxx\deploy.wsdd</inputFile>
                            <inputFile>${basedir}\src\main\webapp\WEB-INF\xxxx\deploy.wsdd</inputFile>
                        </inputFiles>
                    <isServerConfig>true</isServerConfig>
                <extraClasses></extraClasses>

                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>java2wsdl</goal>
                                <goal>admin</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>axis</groupId>
                            <artifactId>axis</artifactId>
                            <version>1.3</version>
                        </dependency>

                    </dependencies>
                </plugin>
            </plugins>
        </build>
...