You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@ws.apache.org by Sanjiva Weerawarana <sa...@watson.ibm.com> on 2000/08/08 08:33:00 UTC

rpcrouter servlet committed

I have committed a servlet version of rpcrouter.jsp - see
org.apache.soap.server.http.RPCRouterServlet.

This code also implements the scopes proposal I sent a few minutes
ago. If there's disagreement on that I'll yank the code.

Differences between rpcrouter.jsp and the servlet are:
- changed scope model to do application, session and request
- used Steven McDowall's UTF8 stuff to better support I18N
  (is it correct to always set the outgoing content type to UTF8??)

[Steven, your version had dropped the scripting support; I brought
it back in. Also, your version had state, which AFAIK is not valid
servlet style.]

I haven't put in Steven's content-length code in there yet. Is the
only way to buffer the results and then count and send? Seems 
expensive .. however, maybe that's the only way. I will merge that
code in in a bit (I'm getting sleepy).

There's one major issue to be sorted out: The admin client and the
rpcrouter servlet/jsp *MUST* run in the same web app or the admin
client breaks .. the reason is that the client does a useBean on
the service manager object with scope=application. If the two 
things are not in the same web app, they have different servlet
contexts ==> they get their own instances ==> you register with
the admin client and you won't see it! Not good. 

Two possible solutions:
    (1) make sure they're in the same web app. Is that portable?
        I mean do all app servers currently support web apps?
        If so I prefer this approach.
    (2) make the admin client talk to the service manager via SOAP
        using the ServiceManagerClient class. Not too bad, and has
        the nice feature that the admin client can remotely admin
        a SOAP server. 

The above solutions are assuming my assertion about a shared servlet
context for all parts of a web app is correct. I am no servlet 
expert, so I would really appreciate it someone could verify 
(postively or negatively) that. If someone can suggest an alternate
solution that's great too.

So, for now, if you use the servlet then the admin client is broken.
Oh yeah, its broken for rpcrouter.jsp too right now because I thought
I was being very smart and put the two things into two different dirs
==> two different contexts ==> different webapps. Ouch.

Sanjiva.


RE: rpcrouter servlet committed

Posted by "Steven J. McDowall" <sj...@uswest.net>.
State? What is not allowed with state in Servlets??

I have written many servlets (including a pretty large library system)
with state (as long as it's properly maintained of course)..

If you read Java Servlet Programming (O'Reilly) on Servlet lifecycle
state is explicitly utilized and allowable..

Or am I missing something else?

As for the web-client and engine, the requirement is that they (as you
say) must be under the same context, and hence, the same rootDir.. That
is as far a the requirement goes.. Personally, having the client and
rpcengine
under the same context (in my case webapps/soap) makes a LOT of sense and is
not an unreasonable requirement..

Also, what happened to the nice README file I wrote that indicated HOW to
implement this? We need to take some of that (and the webapps/soap dir I
created)
and keep it somewhere.. It is useful too

-Steve


-----Original Message-----
From: Sanjiva Weerawarana [mailto:sanjiva@watson.ibm.com]
Sent: Tuesday, August 08, 2000 1:33 AM
To: Apache SOAP
Subject: rpcrouter servlet committed


I have committed a servlet version of rpcrouter.jsp - see
org.apache.soap.server.http.RPCRouterServlet.

This code also implements the scopes proposal I sent a few minutes
ago. If there's disagreement on that I'll yank the code.

Differences between rpcrouter.jsp and the servlet are:
- changed scope model to do application, session and request
- used Steven McDowall's UTF8 stuff to better support I18N
  (is it correct to always set the outgoing content type to UTF8??)

[Steven, your version had dropped the scripting support; I brought
it back in. Also, your version had state, which AFAIK is not valid
servlet style.]

I haven't put in Steven's content-length code in there yet. Is the
only way to buffer the results and then count and send? Seems
expensive .. however, maybe that's the only way. I will merge that
code in in a bit (I'm getting sleepy).

There's one major issue to be sorted out: The admin client and the
rpcrouter servlet/jsp *MUST* run in the same web app or the admin
client breaks .. the reason is that the client does a useBean on
the service manager object with scope=application. If the two
things are not in the same web app, they have different servlet
contexts ==> they get their own instances ==> you register with
the admin client and you won't see it! Not good.

Two possible solutions:
    (1) make sure they're in the same web app. Is that portable?
        I mean do all app servers currently support web apps?
        If so I prefer this approach.
    (2) make the admin client talk to the service manager via SOAP
        using the ServiceManagerClient class. Not too bad, and has
        the nice feature that the admin client can remotely admin
        a SOAP server.

The above solutions are assuming my assertion about a shared servlet
context for all parts of a web app is correct. I am no servlet
expert, so I would really appreciate it someone could verify
(postively or negatively) that. If someone can suggest an alternate
solution that's great too.

So, for now, if you use the servlet then the admin client is broken.
Oh yeah, its broken for rpcrouter.jsp too right now because I thought
I was being very smart and put the two things into two different dirs
==> two different contexts ==> different webapps. Ouch.

Sanjiva.



RE: rpcrouter servlet committed

Posted by "Steven J. McDowall" <sj...@uswest.net>.
State? What is not allowed with state in Servlets??

I have written many servlets (including a pretty large library system)
with state (as long as it's properly maintained of course)..

If you read Java Servlet Programming (O'Reilly) on Servlet lifecycle
state is explicitly utilized and allowable..

Or am I missing something else?

As for the web-client and engine, the requirement is that they (as you
say) must be under the same context, and hence, the same rootDir.. That
is as far a the requirement goes.. Personally, having the client and
rpcengine
under the same context (in my case webapps/soap) makes a LOT of sense and is
not an unreasonable requirement..

Also, what happened to the nice README file I wrote that indicated HOW to
implement this? We need to take some of that (and the webapps/soap dir I
created)
and keep it somewhere.. It is useful too

-Steve


-----Original Message-----
From: Sanjiva Weerawarana [mailto:sanjiva@watson.ibm.com]
Sent: Tuesday, August 08, 2000 1:33 AM
To: Apache SOAP
Subject: rpcrouter servlet committed


I have committed a servlet version of rpcrouter.jsp - see
org.apache.soap.server.http.RPCRouterServlet.

This code also implements the scopes proposal I sent a few minutes
ago. If there's disagreement on that I'll yank the code.

Differences between rpcrouter.jsp and the servlet are:
- changed scope model to do application, session and request
- used Steven McDowall's UTF8 stuff to better support I18N
  (is it correct to always set the outgoing content type to UTF8??)

[Steven, your version had dropped the scripting support; I brought
it back in. Also, your version had state, which AFAIK is not valid
servlet style.]

I haven't put in Steven's content-length code in there yet. Is the
only way to buffer the results and then count and send? Seems
expensive .. however, maybe that's the only way. I will merge that
code in in a bit (I'm getting sleepy).

There's one major issue to be sorted out: The admin client and the
rpcrouter servlet/jsp *MUST* run in the same web app or the admin
client breaks .. the reason is that the client does a useBean on
the service manager object with scope=application. If the two
things are not in the same web app, they have different servlet
contexts ==> they get their own instances ==> you register with
the admin client and you won't see it! Not good.

Two possible solutions:
    (1) make sure they're in the same web app. Is that portable?
        I mean do all app servers currently support web apps?
        If so I prefer this approach.
    (2) make the admin client talk to the service manager via SOAP
        using the ServiceManagerClient class. Not too bad, and has
        the nice feature that the admin client can remotely admin
        a SOAP server.

The above solutions are assuming my assertion about a shared servlet
context for all parts of a web app is correct. I am no servlet
expert, so I would really appreciate it someone could verify
(postively or negatively) that. If someone can suggest an alternate
solution that's great too.

So, for now, if you use the servlet then the admin client is broken.
Oh yeah, its broken for rpcrouter.jsp too right now because I thought
I was being very smart and put the two things into two different dirs
==> two different contexts ==> different webapps. Ouch.

Sanjiva.