2

Restlet 2.1 で JSE アプリケーションを実行しています。アプリケーション コンテキストを使用しようとしていますが、アプリケーションでは常に null です。null であるため、リソースを呼び出すときに渡す属性を含め、何にもアクセスできないようです。

restlet アプリケーション クラスのコードは次のとおりです。

package net.factor3.mailapp;

import net.factor3.mailapp.impl.PageServerImpl;

import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
import org.restlet.Server;
import org.restlet.data.MediaType;
import org.restlet.data.Protocol;
import org.restlet.routing.Router;
import org.restlet.routing.Template;

public class MyServer extends Application
{
   public MyServer()
   {
      setName("Test Application");
      setDescription("Testing use of Restlets");
   }

  @Override
  public Restlet createInboundRoot()
  {
      Context ctx = getContext();
      Router route = new Router(ctx);

      route.setDefaultMatchingMode(Template.MODE_EQUALS);
      route.attach("http://localhost:8100/",PageServerImpl.class);
      route.attach("http://localhost:8100/{page}",PageServerImpl.class);

      return(route);
   }

   public static void main(String[] args) throws Exception
   {
      Server asrv = new Server(Protocol.HTTP,8100);
      asrv.setNext(new MyServer());
      asrv.start();
   }

}

PageServerImpl は ServerResource であることに注意してください。createInboundRoot() では、getContext() を使用してアプリケーションのコンテキストを取得し、それを ctx に入れます。ctx は常に null です。そのため、ServerResource でパラメーターと属性が失われていると思います。

これは Restlet 2.1 の JRE バージョンのバグですか? もしそうなら、どこに報告すればいいですか?Restlet の Web サイトには、バグ レポートへの明確なリンクがありません。

バグでない場合、この種のアプリケーションで適切なコンテキストを取得するにはどうすればよいですか?

誰かアドバイスください。

4

1 に答える 1

1

Component Class を使用すると、必要に応じて作成できます。

 public class MyServer extends Application
 {
    public MyServer()
    {
       setName("Test Application");
       setDescription("Testing use of Restlets");
    }

    public static void main(String[] args) throws Exception
    {
        // Create a new Restlet component and add a HTTP server connector to it
        Component component = new Component();
        component.getServers().add(Protocol.HTTP, 8182); 
        // Then attach it to the local host
        component.getDefaultHost().attach("/trace", GenericResource.class); 
        // Now, let's start the component!
        // Note that the HTTP server connector is also automatically started.
        component.start();
    }
}

于 2012-12-05T04:41:13.220 に答える