Как создать и разместить веб-сервис SOAP в Google App Engine? - PullRequest
0 голосов
/ 03 сентября 2018

Можно ли создать и разместить веб-сервис SOAP в Google App Engine, используя Java?

Я просматривал официальную документацию GAE и Интернет, но не могу найти информацию или инструкции по этому поводу.

Если возможно, какие библиотеки добавить в файл pom.xml и инструкции по настройке приложения (для web.xml и appengine-web.xml)?

1 Ответ

0 голосов
/ 05 сентября 2018

Краткий ответ - да. Главное, что нужно понять, это то, что среда Java AppEngine использует Jetty HTTP / контейнер сервлетов. Оттуда вы можете следовать руководству пользователя Metro , чтобы добавить веб-сервис на ваш сайт / приложение. Metro - это реализация JAX-WS. Вот что я сделал, чтобы добавить веб-сервис SOAP к образцу веб-сайта GuessBook, который я запускал в локальной среде разработки - я немного ленив и не хотел начинать с нуля:

  1. Добавьте зависимость Metro в файл POM:

    <dependency>
        <groupId>org.glassfish.metro</groupId>
        <artifactId>webservices-rt</artifactId>
        <version>2.3</version>
    </dependency>
    
  2. Создайте стандартный класс веб-службы SOAP, который будет обрабатывать входящие вызовы веб-службы. Например:

    package com.jh.guessbook;
    
    import javax.jws.WebService;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    
    @WebService(serviceName = "SOAPHelloWorld")
    public class SOAPHelloWorld
    {
        /**
         * This is a sample web service operation
         */
        @WebMethod(operationName = "hello")
        public String hello(@WebParam(name = "name") String txt)
        {
            return "Hello " + txt + " !";
        }
    }
    
  3. Создайте файл sun-jaxws.xml в папке WEB-INF. Здесь вы определяете свои конечные точки. Вот файл для моего примера веб-сервиса:

    <?xml version="1.0" encoding="UTF-8"?>
    <endpoints
            xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
            version="2.0">
        <endpoint
                name="SOAPHelloWorld"
                implementation="com.jh.guessbook.SOAPHelloWorld"
                url-pattern="/soapws"/>
    </endpoints>
    
  4. И последнее, но не менее важное: настройте прослушиватель WS, сервлет и отображение URL в web.xml. Вот что я добавил к своему web.xml:

    <listener>
        <listener-class>
             com.sun.xml.ws.transport.http.servlet.WSServletContextListener
          </listener-class>
    </listener>
    <servlet>
        <servlet-name>SOAPHelloWorld</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
        <servlet-name>SOAPHelloWorld</servlet-name>
        <url-pattern>/soapws</url-pattern>
     </servlet-mapping>
    

Вы можете получить определение WSDL, просмотрев конечную точку с помощью ?wsdl. В моем случае, снова работает локально, URL-адрес http://localhost:8080/soapws?wsdl.

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