为啥 GAE 上的 Restlet 说 Component 是 NULL

Posted

技术标签:

【中文标题】为啥 GAE 上的 Restlet 说 Component 是 NULL【英文标题】:Why does Restlet on GAE says Component is NULL为什么 GAE 上的 Restlet 说 Component 是 NULL 【发布时间】:2016-10-24 21:07:22 【问题描述】:

对于对 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

为什么说组件为空? 我同意我没有定义组件,而是使用了 ServerResources 并将它们映射到 Application 类中的路由器。 但这就是根据 Restlet GAE 版文档应该如何完成的。

布线应用类

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\"");
    

我做错了什么吗?

【问题讨论】:

【参考方案1】:

您是否按照文档(以下链接)中的说明配置了您的 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.htmlhttps://restlet.com/technical-resources/restlet-framework/javadocs/2.0/jee/api/org/restlet/Component.html 您可以看到该组件是可选的,但可能很有用,但可能在 GAE 实现中默认情况下它没有。

【讨论】:

是的,我做到了。我跟着这本书。有趣的是我运行它没有问题,但这些日志吓坏了我

以上是关于为啥 GAE 上的 Restlet 说 Component 是 NULL的主要内容,如果未能解决你的问题,请参考以下文章

ini 用于cas的apache2.conf用于映射在/ cas / v1上的restlet crap的位置过滤器,因此对restlet的请求被限制为IPv4 11.22.33.44

为啥我的 GAE 仪表板中有 favicon.ico 错误?

添加 Restlet 2.3 CORS 的正确方法

RESTLET 2.1RC1:从 GWT 客户端发送到服务器的 ChallengeResponse 始终为 NULL

英语Restlet Client Sign怎么翻译?

如何使用 Restlet apis for JavaEE 检索在 Http Post 请求中发送的数据?