我正在使用Maven跟踪使用Java的Google Cloud Endpoints的Getting Started guide,我无法使用API Explorer访问我的终端。
在大多数情况下,我都遵循了指南,尽管我在项目中添加了一些结构。我的根项目包是com.ryanharter.devinfo
,我的端点位于com.ryanharter.devinfo.spi
包中,而我的模型类位于com.ryanharter.devinfo.beans
(这是以移动后端启动器为模型)。
我已经编写了我的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日志显示了这个:
[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
是空的。
除了包装结构和课程内容之外,据我所知,我已遵循上面链接的指南。
修改
回应Dan,这是我的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目标将会为我处理这个问题。
答案 0 :(得分:0)
我不相信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
。
这将使用处理传入请求的servlet注册您的API类。