Frage

I am running a JSE application with Restlet 2.1. I am attempting to use the application context, and am finding that it is always null in my application. Because it is null, I cannot seem to access anything -- including any attributes that I pass when I invoke the resource.

The code for the restlet application class is below:

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();
   }

}

Note that the PageServerImpl is a ServerResource. In createInboundRoot(), I use getContext() to get the application's context and put it into ctx. ctx is always null, and I believe for that reason parameters and attributes are lost in the ServerResource.

Is this a bug in the JRE version of Restlet 2.1? If it is, where do I go to report it? There is no clear link to bug reports on the Restlet website.

If it is not a bug, then how do I get a decent context in an application of this kind???

Someone please advise.

War es hilfreich?

Lösung

Using Component Class you can create statisfy your need:

 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();
    }
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top