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