[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlrpc-user
Subject: Re: Passing values from WebServer to handler
From: arvind krishna <arvind370 () yahoo ! co ! uk>
Date: 2008-05-21 17:41:04
Message-ID: 49453.82691.qm () web27903 ! mail ! ukl ! yahoo ! com
[Download RAW message or body]
Hi Peter,
I had to do something similar. I was thinking about adding a static variable to the \
instance that I wanted to use. Something like the one below:
MyRpcServer(int port,Communicator comm) throws Exception {
super(port);
this.comm = comm;
XmlRpcServer xmlRpcServer = this.getXmlRpcServer();
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.addHandler("Foo",Foo.class);
// ---- Code Added
Foo.commInstance = this.comm;
//-----------------------
Now when the upcall is made the the server to the method, it could access the \
commInstance.
Thanks,
Arvind
--- On Wed, 21/5/08, Petr Å imek <petr.simek@gmail.com> wrote:
> From: Petr Å imek <petr.simek@gmail.com>
> Subject: Passing values from WebServer to handler
> To: xmlrpc-dev@ws.apache.org
> Date: Wednesday, 21 May, 2008, 5:05 PM
> Hello,
> I need solution for this:
> My application when started have its own thread and in
> another thread I want
> to start XML-RPC WebServer class. Both classes got instance
> of Communicator
> class that is handling communication between these two
> classes via
> synchronized methods.
>
> Something like this:
>
> public class MyApp extends Thread {
>
> public static void main(String[] args) throws Exception
> {
>
> Communicator comm = new Communicator();
> MyApp app = new MyApp(comm);
> app.start();
> MyRpcServer server = new MyRpcServer(8080,comm);
> server.start();
> }
> }
>
> And MyRpcServer class:
>
> import org.apache.xmlrpc.server.*;
> import org.apache.xmlrpc.webserver.*;
>
> public class MyRpcServer extends WebServer {
>
> private Communicator comm;
>
> MyRpcServer(int port,Communicator comm) throws
> Exception {
> super(port);
>
> this.comm = comm;
>
> XmlRpcServer xmlRpcServer = this.getXmlRpcServer();
>
> PropertyHandlerMapping phm = new
> PropertyHandlerMapping();
> phm.addHandler("Foo",Foo.class);
>
> xmlRpcServer.setHandlerMapping(phm);
>
> XmlRpcServerConfigImpl serverConfig =
> (XmlRpcServerConfigImpl)
> xmlRpcServer
> .getConfig();
> serverConfig.setEnabledForExtensions(true);
> serverConfig.setContentLengthOptional(false);
>
> }
>
> }
>
> (MyRpcServer is little adjusted example from Apache XML-RPC
> site)
>
> Until there everything is ok.
> But where is problem:
>
> When there comes request to do something with any Foo class
> method via
> XML-RPC I need to do something in Foo class but I need
> there the instance of
> Communicator! Because after doing something in Foo I have
> to send command
> via Communicator to the MyApp thread.
> So I have to know how I can pass the comm instance of
> Communicator (private
> property of MyRpcServer) to Foo class method.
>
> If I have something like this:
>
> public class Foo {
> public int doSomething(int rpcParam1, int rpcParam2) {
> //do something what I want to tell to MyApp thread
> return x;
> }
> }
>
> I imagine (naively :-) something like this
>
> public class Foo {
> public int doSomething(Communicator comm, int
> rpcParam1, int rpcParam2)
> {
> comm.addCommand(rpcParam1);
> return x;
> }
> }
>
> where comm parameter is the instance passed from
> MyRpcServer automatically
> when Foo.doSomething is requested.
>
> Is there any other way how to get this instance?
>
> Thank you very much for any advice or pointing to any url
> for solution.
>
> Petr Simek
__________________________________________________________
Sent from Yahoo! Mail.
A Smarter Email http://uk.docs.yahoo.com/nowyoucan.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic