oops dunno how it's garbled. posting again:

https://github.com/apache/ofbiz/blob/7ba7f3c2e16df6c8db0d8114e124957199cea1ff/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/SOAPEventHandler.java#L81
https://github.com/apache/ofbiz/blob/7ba7f3c2e16df6c8db0d8114e124957199cea1ff/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/XmlRpcEventHandler.java#L79
https://github.com/apache/ofbiz/blob/7ba7f3c2e16df6c8db0d8114e124957199cea1ff/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/XmlRpcEventHandler.java#L232

On Fri, Mar 16, 2018 at 9:27 PM, Rajesh Mallah <mallah.raj...@gmail.com>
wrote:

> References:
>
>
>
>
> SOAPEventHandler.java
>
>
>
> https://github.com/apache/ofbiz/blob/7ba7f3c2e16df6c8db0d8114e12495
> 7199cea1ff/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/
> SOAPEventHandler.java#L81
>
>
>
>
>
>
>
>
>
>
> XmlRpcEventHandler.java:
>
> https://github.com/apache/ofbiz/blob/7ba7f3c2e16df6c8db0d8114e124957199cea1ff/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/XmlRpcEventHandler.java#L79
>
> https://github.com/apache/ofbiz/blob/7ba7f3c2e16df6c8db0d8114e124957199cea1ff/framework/webapp/src/main/java/org/apache/ofbiz/webapp/event/XmlRpcEventHandler.java#L232
>
>
> regds
> mallah.
>
> On Fri, Mar 16, 2018 at 9:11 PM, Rajesh Mallah <mallah.raj...@gmail.com>
> wrote:
>
>> Hi Scott / Gurus! ,
>>
>> in SOAPEventHandler  dispatcher and delegator is being got
>> from  HttpServletRequest  request.
>>
>> However in XmlRpcHttpServer the request is being
>> eventually handled via a callback (handler) of class
>> ServiceRpcHandler . I am not sure how the HttpServletRequest
>> can be passed till execute function of ServiceRpcHandler
>>
>> any tips ?
>>
>> regds
>> mallah.
>>
>>
>>
>> On Fri, Mar 16, 2018 at 7:33 PM, Rajesh Mallah <mallah.raj...@gmail.com>
>> wrote:
>>
>>> The EventHandler objects are
>>>> singletons shared among all incoming requests so we don't want to store
>>>> request-specific objects in fields that are accessed by all requests or
>>>> the
>>>> results will get pretty unpredictable for concurrent requests across
>>>> multiple tenants.
>>>>
>>>
>>> Agreed and trying to see how the dispatcher and delegator can be got
>>> at per request basis. Thanks for the time/attention.
>>>
>>> regds
>>> mallah.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Fri, Mar 16, 2018 at 12:39 AM, Scott Gray <
>>> scott.g...@hotwaxsystems.com> wrote:
>>>
>>>> You're completely right Rajesh, sorry, I jumped the gun without having a
>>>> proper look in my reply.
>>>>
>>>> Your fix looks correct except that we need to move dispatcher/delegator
>>>> to
>>>> local variables rather than instance fields.  The EventHandler objects
>>>> are
>>>> singletons shared among all incoming requests so we don't want to store
>>>> request-specific objects in fields that are accessed by all requests or
>>>> the
>>>> results will get pretty unpredictable for concurrent requests across
>>>> multiple tenants.
>>>>
>>>> Regards
>>>> Scott
>>>>
>>>>
>>>> On 16 March 2018 at 07:01, Rajesh Mallah <mallah.raj...@gmail.com>
>>>> wrote:
>>>>
>>>> > Hi Scott ,
>>>> >
>>>> > I could get it to work by setting dispatcher and delegator only.
>>>> > I referred SOAPEventHandler.java which handles tenants fine.
>>>> >
>>>> > I could not see userLogin handling tenantId as suggested by you,
>>>> > can you please see the below and tell if it is correct.
>>>> >
>>>> > Do we have test coverage to see if does not break anything else?
>>>> >
>>>> > $ diff  -u5 XmlRpcEventHandler.java.orig   XmlRpcEventHandler.java
>>>> > --- XmlRpcEventHandler.java.orig        2018-03-15 23:29:46.954352066
>>>> +0530
>>>> > +++ XmlRpcEventHandler.java     2018-03-15 23:29:51.734435105 +0530
>>>> > @@ -91,10 +91,12 @@
>>>> >      /**
>>>> >       * @see
>>>> > org.apache.ofbiz.webapp.event.EventHandler#invoke(ConfigXMLR
>>>> eader.Event,
>>>> > ConfigXMLReader.RequestMap, javax.servlet.http.HttpServletRequest,
>>>> > javax.servlet.http.HttpServletResponse)
>>>> >       */
>>>> >      public String invoke(Event event, RequestMap requestMap,
>>>> > HttpServletRequest request, HttpServletResponse response) throws
>>>> > EventHandlerException {
>>>> >          String report = request.getParameter("echo");
>>>> > +        dispatcher = (LocalDispatcher) request.getAttribute("
>>>> > dispatcher");
>>>> > +        delegator = (Delegator) request.getAttribute("delegator");
>>>> >          if (report != null) {
>>>> >              BufferedReader reader = null;
>>>> >              StringBuilder buf = new StringBuilder();
>>>> >              try {
>>>> >                  // read the inputstream buffer
>>>> >
>>>> >
>>>> >
>>>> > On Thu, Mar 15, 2018 at 9:51 PM, Scott Gray <
>>>> scott.g...@hotwaxsystems.com>
>>>> > wrote:
>>>> >
>>>> > > Hi Rajesh,
>>>> > >
>>>> > > It looks like the XmlRpcEventHandler class doesn't support this but
>>>> it
>>>> > > could easily be modified to do so.  I'd suggest filing a ticket, and
>>>> > > perhaps even providing a patch :-)
>>>> > >
>>>> > > The tenantId just needs to be derived from the url and then passed
>>>> into
>>>> > the
>>>> > > userLogin service in the OfbizRpcAuthHandler.isAuthorized(...)
>>>> method.
>>>> > >
>>>> > > Regards
>>>> > > Scott
>>>> > >
>>>> > > On 16 March 2018 at 00:22, Rajesh Mallah <mallah.raj...@gmail.com>
>>>> > wrote:
>>>> > >
>>>> > > > Hello All ,
>>>> > > >
>>>> > > > Is it possible to direct the webservice call to a particular
>>>> tenant
>>>> > using
>>>> > > > XMLRPC?
>>>> > > >
>>>> > > > I am referring to
>>>> > > >
>>>> > > >
>>>> > > > https://cwiki.apache.org/confluence/display/OFBIZ/Using+XMLR
>>>> PC+as+an+
>>>> > > > alternative+to+SOAP
>>>> > > >
>>>> > > >
>>>> > > > consider the snippet
>>>> > > >
>>>> > > > =======================================================
>>>> > > >   XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
>>>> > > >         config.setServerURL(new URL("
>>>> > > > http://127.0.0.1/webtools/control/xmlrpc";
>>>> > > > <http://127.0.0.1/webtools/control/xmlrpc>));
>>>> > > >         config.setEnabledForExceptions(true);
>>>> > > >         config.setEnabledForExtensions(true);
>>>> > > >
>>>> > > >         XmlRpcClient client = new XmlRpcClient();
>>>> > > >         client.setConfig(config);
>>>> > > >
>>>> > > >         Map paramMap = new HashMap();
>>>> > > >         paramMap.put("login.username", "admin");
>>>> > > >         paramMap.put("login.password", "ofbiz");
>>>> > > >         paramMap.put("idToFind", "admin");
>>>> > > > ============================================================
>>>> > ===========
>>>> > > > I tried setting the host part of serverUrl to domain_name of
>>>> > > > tenant_domain_name .
>>>> > > >
>>>> > > > I find that the requests always work on the first tenant .
>>>> > > > i need to work with a specific tenant .
>>>> > > >
>>>> > > > Any help is solicited.
>>>> > > >
>>>> > > > regds
>>>> > > > mallah.
>>>> > > >
>>>> > >
>>>> >
>>>>
>>>
>>>
>>
>

Reply via email to