Няма открити класове крайни точки. когато се опитвате да изградите проект Google Cloud Endpoints

В процес съм на следване на Начално ръководство за Google Cloud Endpoints в Java с помощта на Maven и не мога да осъществя достъп до моите крайни точки с API Explorer.

В по-голямата си част следвах ръководството, въпреки че добавих малка структура към моя проект. Моят основен проектен пакет е com.ryanharter.devinfo и моите крайни точки живеят в com.ryanharter.devinfo.spi пакет, докато моите моделни класове са в com.ryanharter.devinfo.beans (това е моделирано след Mobile Backend Starter).

Написах моя клас Endpoints и го анотирах така:

@Api(name = "deviceinfo", 
     version = "v1",
     namespace = @ApiNamespace(
        ownerDomain = "ryanharter.com",
        ownerName = "ryanharter.com", 
        packagePath = "devinfo")
     )
public class DeviceInfoV1 {

    @ApiMethod(name = "list", path = "devices", httpMethod = HttpMethod.GET)
    public DeviceListDto list(QueryDto query) {
        ...
    }

    ...

}

Всичко това изглежда добре и съответства на други работещи проекти, които имам, но когато стартирам сървъра за разработка, получавам празен екран.

Също така забелязах, че моят maven log показва това:

[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ devinfo ---
[INFO] Compiling 8 source files to /path/to/devinfo/target/classes
[INFO] 
[INFO] --- appengine-maven-plugin:1.8.7:endpoints_get_discovery_doc (default) @ devinfo ---
[INFO] 
[INFO] Google App Engine Java SDK - get endpoints discovery doc...
[INFO] No Endpoints classes detected.

Виждам, че има „Няма открити класове на крайни точки“. Също така забелязвам, че /path/to/devinfo/target/classes е празен.

Освен структурата на пакета и съдържанието на класа, доколкото мога да преценя, следвах ръководството, свързано по-горе към писмото.

РЕДАКТИРАНЕ:

В отговор на Дан, ето съдържанието на моя файл web.xml:

<?xml version="1.0" encoding="utf-8"?>
<web-app
        version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

</web-app>

Според документацията, свързана по-горе, не съм докосвал това. Точно това е генерирал архетипът на Maven. Виждал съм доклади онлайн за необходимостта от ръчно картографиране на моите крайни точки в web.xml, но документът не казва нищо за това, така че предположих, че целта на Maven ще се погрижи за това вместо мен.


person rharter    schedule 14.11.2013    source източник
comment
Можете ли да споделите съдържанието на вашия файл web.xml?   -  person Dan Holevoet    schedule 14.11.2013
comment
Благодаря @DanHolevoet, редактирах въпроса, за да включва съдържанието на файла web.xml.   -  person rharter    schedule 15.11.2013


Отговори (2)


Опитайте да стартирате: mvn appengine:endpoints_get_client_lib

Освен това не знам дали използвате приставката на Google за eclipse. моят автоматично актуализира web.xml, за да съдържа моите класове на контролера за крайните точки. Крайните точки на моя проект изглеждат малко така:

<servlet>
    <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>package.endpointsController,package.anotherTestcontroller</param-value>
        </init-param>
</servlet>
    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>
person Dries De Rydt    schedule 21.12.2015

Не вярвам, че Maven ще се справи с картографирането в web.xml, съжалявам за това.

Можете ли да опитате нещо от рода на:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.google.devrel.samples.helloendpoints.Greetings,com.google.devrel.samples.helloendpoints.FooBar</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

Използвайте свои собствени класове на мястото на com.google.devrel.samples.helloendpoints.Greetings и com.google.devrel.samples.helloendpoints.FooBar във файла.

Това ще регистрира вашите API класове със сървлета, който обработва входящи заявки.

person Dan Holevoet    schedule 20.11.2013
comment
Опитах това, но нямам промяна в изхода на maven, все още няма клиентски библиотеки. - person rharter; 05.01.2014
comment
Разбрах това. Изпълнявам mvn clean appengine:endpoints_generate_client_lib, но целта appengine:endpoints_generate_client_lib зависи от компилацията, но никъде не казва това. Така че, когато стартирам mvn clean package appengine:endpoints_generate_client_lib, нещата вървят добре (с изключение на това, че поставя библиотеките в текущата ми директория, а не целевата директория). - person rharter; 05.01.2014