在对Restlet资源发出的每个请求中,我都会在Google App Engine日志中看到以下日志
21:38:50.059 javax.servlet.ServletContext log: ExampleAPIs: [Restlet] ServerServlet: component class is null
21:38:51.568 javax.servlet.ServletContext log: ExampleAPIs: [Restlet] Attaching application: com.example.api.ExampleAPIConfig@68ec99 to URI: /example/v1
为什么说Component是null? 我同意我没有定义组件而是使用ServerResources并将它们映射到Application类中的路由器。 但这就是按照Restlet GAE Edition文档完成的。
布线路线的应用类
public Example extends Application {
@Override
public Restlet createInboundRoot() {
router = new Router(getContext());
CorsService corsService = new CorsService();
corsService.setAllowedOrigins( new HashSet<String>(Arrays.asList("http://example.com")));
corsService.setAllowedCredentials(true);
getServices().add(corsService);
router.attach("/xyz", XYZ.class);
}
}
处理并返回JSON表示的服务器资源
public class XYZ extends ServerResource {
private static final Logger logger = Logger.getLogger("API:Xyz");
@Get(":json")
public Representation handleGetRequest() {
..
return new JsonRepresentation("{\"code\": 4008, \"description\": \"Something blah something\"}");
}
}
我做错了什么?
答案 0 :(得分:0)
您是否按照文档(链接下方)中的说明配置了servlet配置文件。 我认为servlet不是一个类。
https://restlet.com/technical-resources/restlet-framework/guide/2.3/editions/gae
更新
好的,如果你更深入的文档:
https://restlet.com/technical-resources/restlet-framework/javadocs/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html
https://restlet.com/technical-resources/restlet-framework/javadocs/2.0/jee/api/org/restlet/Component.html
您可以看到该组件是可选的但可能很有用,但可能在GAE实现中它默认没有。