Hi!
    I'm doing a webservice that can be stop using a request, I had followed one 
forum here. But I run in a trouble stopping the component in a virtual host set 
up.

Here is the first testcase 1, I can stop the server using 
http://localhost:8182/stop

///////////////////
// testcase 1    //
///////////////////
public static void main(String[] args) throws Exception{
  Component component=new Component();
  component.getServers().add(Protocol.HTTP,8182); //Private Port
  component.getServers().add(Protocol.HTTP,8183); //Public Port
  MyApplication myApp=new MyApplication();
  component.getDefaultHost().attach(myApp);
  myApp.getContext().getAttributes().put("component", component);
  component.start();
}

///////////////////
// MyApplication //
///////////////////
public class MyApplication extends Application {
  @Override
  public synchronized Restlet createInboundRoot() {
    Router router = new Router(getContext());  
    router.attach("/stop", StopResource.class);
    return router;
  }
}

///////////////////
// StopResource //
///////////////////
public class StopResource extends ServerResource
{

    @Get
    public Representation requestGet()  throws Exception{
        ((Component) getContext().getAttributes().get("component")).stop();
        return null;
    }
}

Here is a testcase 2 that is using a virtual host
///////////////////
// testcase 2    //
///////////////////
public static void main(String[] args) throws Exception{
  Component component=new Component();
  component.getServers().add(Protocol.HTTP,8182); //Private Port
  component.getServers().add(Protocol.HTTP,8183); //Public Port
                
  InetAddress inet = InetAddress.getLocalHost();
  String cannonicalHostName = inet.getCanonicalHostName();
                
  component.getContext().getAttributes().put("component", component);
  VirtualHost proxyHost = new VirtualHost(component.getContext());
  proxyHost.setHostDomain(cannonicalHostName);
  proxyHost.setHostPort("8182");
                
  proxyHost.attach("/stop", StopResource.class);
                
  VirtualHost loadBalance = new VirtualHost(component.getContext());
  loadBalance.setHostDomain(cannonicalHostName);
  loadBalance.setHostPort("8183");
  loadBalance.setRoutingMode(Router.MODE_NEXT_MATCH);
                
  component.getHosts().add(proxyHost);
  component.getHosts().add(loadBalance);
                
  component.start();
}

Here is the stacktrace for the testcase 2
Apr 20, 2010 10:01:27 AM org.restlet.resource.UniformResource doCatch
WARNING: Exception or error caught in resource
java.lang.NullPointerException
        at 
com.ti.itg.peit.peitcache.resource.StopResource.requestGet(StopResource.java:24)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java:427)
        at org.restlet.resource.ServerResource.get(ServerResource.java:592)
        at org.restlet.resource.ServerResource.doHandle(ServerResource.java:474)
        at 
org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:534)
        at 
org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:270)
        at org.restlet.resource.ServerResource.handle(ServerResource.java:764)
        at org.restlet.resource.Finder.handle(Finder.java:515)
        at org.restlet.routing.Filter.doHandle(Filter.java:156)
        at org.restlet.routing.Filter.handle(Filter.java:203)
        at org.restlet.routing.Router.doHandle(Router.java:495)
        at org.restlet.routing.Router.handle(Router.java:735)
        at org.restlet.routing.Filter.doHandle(Filter.java:156)
        at org.restlet.routing.Filter.handle(Filter.java:203)
        at org.restlet.routing.Router.doHandle(Router.java:495)
        at org.restlet.routing.Router.handle(Router.java:735)
        at org.restlet.routing.Filter.doHandle(Filter.java:156)
        at 
org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:152)
        at org.restlet.routing.Filter.handle(Filter.java:203)
        at org.restlet.routing.Filter.doHandle(Filter.java:156)
        at org.restlet.routing.Filter.handle(Filter.java:203)
        at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
        at org.restlet.Component.handle(Component.java:385)
        at org.restlet.Server.handle(Server.java:474)
        at 
org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
        at 
org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
        at 
org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:366)
        at 
org.restlet.engine.http.connector.Connection.readMessages(Connection.java:701)
        at 
org.restlet.engine.http.connector.ControllerTask$2.run(ControllerTask.java:94)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

and thanks in advance for answering my question/query

Sincerly,
Gerald

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2589898

Reply via email to