RE: [JBoss-dev] http transport

2002-06-21 Thread Bill Burke

JDK already has built in RMI HTTP tunneling.  Why would we need this
transport?

Here's directions:


http://www.dmh2000.com/ApacheTomcatRMI.htm

Bill


> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
> Holger Engels
> Sent: Friday, June 21, 2002 5:00 AM
> To: [EMAIL PROTECTED]
> Subject: [JBoss-dev] http transport
>
>
>
> I try to understand, how a http transport can be implemented within jboss
> .. so what do I need?
>
>
> on the server side:
>
> o a connector servlet / extra http deamon, that accepts invocations
>   embedded in http posts. the result of a home invocation is a handle.
>   subsequent invocations (remote interface) contain the handle to identify
>   the target ejb. the servlet is completely stateless.
> o an mbean service, that manages the servlet / http deamon
>
>
> on the client:
>
> o some interceptor (the last one in the chain), that marshalls the
>   invocation as an http post request and demarshalls results / throwables.
>   I call it the 'Transport'
> o is a special handle implementation required?
> o usertransaction handling is transparent (part of Invocation)?
>
>
> configuration:
>
> o it's the server's job to provide the connector servlet. the servlet
>   doesn't need to be configured. the invocations carry all the information
>   that is required to perform home-/ remote-invocations.
>
> o the client will do a lookup first (coded name, declared in the
>   application-client descriptor). it then gets a dynamic proxy passing on
>   the java style invocation to the invocation handler. the invocation
>   handler feeds the invocation into the interceptor chain. this chain has
>   to be configured somehow (during deployment of the application-client
>   jar).
>
> o afaik there's no application client deployment at the moment and the
>   client side interceptors are configured from the server, right?
>
>
> so what makes up the whole interceptor chain? we distinguish:
>
> o client side interceptors
> o server side interceptors (synchronization, pooling / caching, security)
> o symmetric interceptors (encryption / decryption for instance)
>
> the overall configuration of the (ordered) interceptor chain is made of
> component aspects and reference aspects. transport is just another aspect
> of the reference.
>
>
> authentication:
>
> in the smartcc, using the http transport requires a http login module
> (basic/digest auth) to be configured. the authentication task is
> performed
> by the servlet container. the container cares about setting up the
> security association.
>
>
> dain asked for an http plugin for jndi. my question: why do I need the
> server side's jndi content on the client if I don't lookup homes? what
> does a java client need beside what's configured in the
> application client
> descriptor. what am i missing?
>
> holger
>
>
>
> ---
> Sponsored by:
> ThinkGeek at http://www.ThinkGeek.com/
> ___
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-21 Thread Dave Smith

The HTTP RMI tunning is the shits. Firstly there is no option to go with
https without getting really ugly. Secondly, the whole cgi-script or
servlet which then calls the local rmi listener generates two network
calls for lookup. Since jetty is running in the container the servlet
lookup should be a local JNDI lookup. 

If you read Holger's web site (http://smartcc.sourceforge.net)  he is
trying to cleanup EJB transport issues when firwalls are in the way.

I hope somebody with more knowledge than me steps up to the plate. I for
1 will be using this stuff..




On Fri, 2002-06-21 at 08:36, Bill Burke wrote:
> JDK already has built in RMI HTTP tunneling.  Why would we need this
> transport?
> 
> Here's directions:
> 
> 
> http://www.dmh2000.com/ApacheTomcatRMI.htm
> 
> Bill
> 
> 
> > -Original Message-
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of
> > Holger Engels
> > Sent: Friday, June 21, 2002 5:00 AM
> > To: [EMAIL PROTECTED]
> > Subject: [JBoss-dev] http transport
> >
> >
> >
> > I try to understand, how a http transport can be implemented within jboss
> > .. so what do I need?
> >
> >
> > on the server side:
> >
> > o a connector servlet / extra http deamon, that accepts invocations
> >   embedded in http posts. the result of a home invocation is a handle.
> >   subsequent invocations (remote interface) contain the handle to identify
> >   the target ejb. the servlet is completely stateless.
> > o an mbean service, that manages the servlet / http deamon
> >
> >
> > on the client:
> >
> > o some interceptor (the last one in the chain), that marshalls the
> >   invocation as an http post request and demarshalls results / throwables.
> >   I call it the 'Transport'
> > o is a special handle implementation required?
> > o usertransaction handling is transparent (part of Invocation)?
> >
> >
> > configuration:
> >
> > o it's the server's job to provide the connector servlet. the servlet
> >   doesn't need to be configured. the invocations carry all the information
> >   that is required to perform home-/ remote-invocations.
> >
> > o the client will do a lookup first (coded name, declared in the
> >   application-client descriptor). it then gets a dynamic proxy passing on
> >   the java style invocation to the invocation handler. the invocation
> >   handler feeds the invocation into the interceptor chain. this chain has
> >   to be configured somehow (during deployment of the application-client
> >   jar).
> >
> > o afaik there's no application client deployment at the moment and the
> >   client side interceptors are configured from the server, right?
> >
> >
> > so what makes up the whole interceptor chain? we distinguish:
> >
> > o client side interceptors
> > o server side interceptors (synchronization, pooling / caching, security)
> > o symmetric interceptors (encryption / decryption for instance)
> >
> > the overall configuration of the (ordered) interceptor chain is made of
> > component aspects and reference aspects. transport is just another aspect
> > of the reference.
> >
> >
> > authentication:
> >
> > in the smartcc, using the http transport requires a http login module
> > (basic/digest auth) to be configured. the authentication task is
> > performed
> > by the servlet container. the container cares about setting up the
> > security association.
> >
> >
> > dain asked for an http plugin for jndi. my question: why do I need the
> > server side's jndi content on the client if I don't lookup homes? what
> > does a java client need beside what's configured in the
> > application client
> > descriptor. what am i missing?
> >
> > holger
> >
> >
> >
> > ---
> > Sponsored by:
> > ThinkGeek at http://www.ThinkGeek.com/
> > ___
> > Jboss-development mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 
> 
> ---
> Sponsored by:
> ThinkGeek at http://www.ThinkGeek.com/
> ___
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development




---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-21 Thread Bill Burke

Good enough for me.  Thanks for the info.  Holger, we should talk.  I can
give you pointers on how to integrate the HTTP Invoker into the 3.1
architecture.

Bill


> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of Dave
> Smith
> Sent: Friday, June 21, 2002 10:21 AM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] http transport
>
>
> The HTTP RMI tunning is the shits. Firstly there is no option to go with
> https without getting really ugly. Secondly, the whole cgi-script or
> servlet which then calls the local rmi listener generates two network
> calls for lookup. Since jetty is running in the container the servlet
> lookup should be a local JNDI lookup.
>
> If you read Holger's web site (http://smartcc.sourceforge.net)  he is
> trying to cleanup EJB transport issues when firwalls are in the way.
>
> I hope somebody with more knowledge than me steps up to the plate. I for
> 1 will be using this stuff..
>
>
>
>
> On Fri, 2002-06-21 at 08:36, Bill Burke wrote:
> > JDK already has built in RMI HTTP tunneling.  Why would we need this
> > transport?
> >
> > Here's directions:
> >
> >
> > http://www.dmh2000.com/ApacheTomcatRMI.htm
> >
> > Bill
> >
> >
> > > -Original Message-
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED]]On Behalf Of
> > > Holger Engels
> > > Sent: Friday, June 21, 2002 5:00 AM
> > > To: [EMAIL PROTECTED]
> > > Subject: [JBoss-dev] http transport
> > >
> > >
> > >
> > > I try to understand, how a http transport can be implemented
> within jboss
> > > .. so what do I need?
> > >
> > >
> > > on the server side:
> > >
> > > o a connector servlet / extra http deamon, that accepts invocations
> > >   embedded in http posts. the result of a home invocation is a handle.
> > >   subsequent invocations (remote interface) contain the
> handle to identify
> > >   the target ejb. the servlet is completely stateless.
> > > o an mbean service, that manages the servlet / http deamon
> > >
> > >
> > > on the client:
> > >
> > > o some interceptor (the last one in the chain), that marshalls the
> > >   invocation as an http post request and demarshalls results
> / throwables.
> > >   I call it the 'Transport'
> > > o is a special handle implementation required?
> > > o usertransaction handling is transparent (part of Invocation)?
> > >
> > >
> > > configuration:
> > >
> > > o it's the server's job to provide the connector servlet. the servlet
> > >   doesn't need to be configured. the invocations carry all
> the information
> > >   that is required to perform home-/ remote-invocations.
> > >
> > > o the client will do a lookup first (coded name, declared in the
> > >   application-client descriptor). it then gets a dynamic
> proxy passing on
> > >   the java style invocation to the invocation handler. the invocation
> > >   handler feeds the invocation into the interceptor chain.
> this chain has
> > >   to be configured somehow (during deployment of the
> application-client
> > >   jar).
> > >
> > > o afaik there's no application client deployment at the moment and the
> > >   client side interceptors are configured from the server, right?
> > >
> > >
> > > so what makes up the whole interceptor chain? we distinguish:
> > >
> > > o client side interceptors
> > > o server side interceptors (synchronization, pooling /
> caching, security)
> > > o symmetric interceptors (encryption / decryption for instance)
> > >
> > > the overall configuration of the (ordered) interceptor chain
> is made of
> > > component aspects and reference aspects. transport is just
> another aspect
> > > of the reference.
> > >
> > >
> > > authentication:
> > >
> > > in the smartcc, using the http transport requires a http login module
> > > (basic/digest auth) to be configured. the authentication task is
> > > performed
> > > by the servlet container. the container cares about setting up the
> > > security association.
> > >
> > >
> > > dain asked for an http plugin for jndi. my question: why do I need the
> > > server side's jndi content on the client if I don't lookup homes? what
> > > does a 

RE: [JBoss-dev] http transport

2002-06-21 Thread Holger Engels

On Fri, 21 Jun 2002, Bill Burke wrote:

> Good enough for me.  Thanks for the info.  Holger, we should talk.  I can
> give you pointers on how to integrate the HTTP Invoker into the 3.1
> architecture.

Ok, I need to know, where I can start. If you could answer the questions 
of my first mail, this would be great. I had a look at the iiop module. I 
think, the http invoker is less complex. I don't need a proxy compiler, no 
ior, no naming service, ..

how do you call, what I call "transport", the last interceptor on the 
client side, that does the marshalling. that is the point, where the 
invocation has to be embedded in a http post request? What are the 
classnames of the IIOP / RMI / SOAP pendants? They serve as a reference 
for the http implementation.

How can I configure jboss to use my implementation of this class? 
invoker-proxy-binding?

unfortunately, I won't be in the office till monday and thus won't read / 
answer mail until then ..

holger


> 
> > -Original Message-
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of Dave
> > Smith
> > Sent: Friday, June 21, 2002 10:21 AM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [JBoss-dev] http transport
> >
> >
> > The HTTP RMI tunning is the shits. Firstly there is no option to go with
> > https without getting really ugly. Secondly, the whole cgi-script or
> > servlet which then calls the local rmi listener generates two network
> > calls for lookup. Since jetty is running in the container the servlet
> > lookup should be a local JNDI lookup.
> >
> > If you read Holger's web site (http://smartcc.sourceforge.net)  he is
> > trying to cleanup EJB transport issues when firwalls are in the way.
> >
> > I hope somebody with more knowledge than me steps up to the plate. I for
> > 1 will be using this stuff..
> >
> >
> >
> >
> > On Fri, 2002-06-21 at 08:36, Bill Burke wrote:
> > > JDK already has built in RMI HTTP tunneling.  Why would we need this
> > > transport?
> > >
> > > Here's directions:
> > >
> > >
> > > http://www.dmh2000.com/ApacheTomcatRMI.htm
> > >
> > > Bill
> > >
> > >
> > > > -Original Message-
> > > > From: [EMAIL PROTECTED]
> > > > [mailto:[EMAIL PROTECTED]]On Behalf Of
> > > > Holger Engels
> > > > Sent: Friday, June 21, 2002 5:00 AM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: [JBoss-dev] http transport
> > > >
> > > >
> > > >
> > > > I try to understand, how a http transport can be implemented
> > within jboss
> > > > .. so what do I need?
> > > >
> > > >
> > > > on the server side:
> > > >
> > > > o a connector servlet / extra http deamon, that accepts invocations
> > > >   embedded in http posts. the result of a home invocation is a handle.
> > > >   subsequent invocations (remote interface) contain the
> > handle to identify
> > > >   the target ejb. the servlet is completely stateless.
> > > > o an mbean service, that manages the servlet / http deamon
> > > >
> > > >
> > > > on the client:
> > > >
> > > > o some interceptor (the last one in the chain), that marshalls the
> > > >   invocation as an http post request and demarshalls results
> > / throwables.
> > > >   I call it the 'Transport'
> > > > o is a special handle implementation required?
> > > > o usertransaction handling is transparent (part of Invocation)?
> > > >
> > > >
> > > > configuration:
> > > >
> > > > o it's the server's job to provide the connector servlet. the servlet
> > > >   doesn't need to be configured. the invocations carry all
> > the information
> > > >   that is required to perform home-/ remote-invocations.
> > > >
> > > > o the client will do a lookup first (coded name, declared in the
> > > >   application-client descriptor). it then gets a dynamic
> > proxy passing on
> > > >   the java style invocation to the invocation handler. the invocation
> > > >   handler feeds the invocation into the interceptor chain.
> > this chain has
> > > >   to be configured somehow (during deployment of the
> > application-client
> > > >   jar).
> > > >
> > > > o afaik there's no application client deployment at the moment and

RE: [JBoss-dev] http transport

2002-06-21 Thread Bill Burke

Holger, in JBoss 3.0 we have client interceptors, and pluggable transports.
The invocation has been totally decoupled from the EJB container.  The EJB
Container is now just an MBean and all EJB invocations go across the JMX
bus.

JBoss 3.1 takes things a bit further.  In 3.1 you can now define multiple
invokers (transports) per EJB container.  So an EJB container can be
configured to receive requests from RMI, IIOP, SOAP, HTTP, whatever all at
the same time.  We'll want to hook your HTTP invoker into this architecture.

The files and java packages you'll want to look at are as follows, There's
also a detail email I sent out 2 months ago that is copied later on in this
email:

In server module:
Packages org.jboss.invocation, org.jboss.proxy

org.jboss.invocation.jrmp.server.JRMPInvoker.java is the main entry point on
the server side.  It accepts invocation requests and routes them across the
JMX bus.  I think your HTTP POST protocol can be very simple.  Just marshall
an Invocation and send it across the wire.  The JRMPInvoker is stateless and
can route any Invocation.

For the client side, you'll need to implement a new
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.  This is really the
"Transport" on the client side.  You'll also need to implement a
org.jboss.proxy.ejb.ProxyFactory.  The JBoss clustering can be used as an
example since it has extended JRMPInvokerProxy, ProxyFactory and has its own
Invoker.  see the cluster module.  All classes under the above packages.

What sucks is that even if you've implemented this stuff, its not very
helpful because JNDI does not have pluggable transports.  This is something
we wanted to work on for JBoss 4.0.  Make JNDI an MBean, as well as rewrite
client-interceptors/server-interceptors/proxy factories  and their
configurations all in terms of MBeans and MBean invocations and MBean xml
descriptors.  This is the major vision Marc has put forth.  To make JBoss a
Unified architecture that can describe any distributed object framework as a
set of MBeans and MBean configurations.  The classes are there, the
configuration isn't.

But, just get the HTTP invoker with EJB working, then we can work on JNDI
later.



Here's what I wrote back in April on the subject:


"JBoss 3.1 (CVS-HEAD) now has the ability to bind multiple invokers per EJB
container.  This means that one EJB container can serve up requests from
IIOP, RMI, SOAP,  all at the same time.  Also, if your
EJBs are configured correctly in jboss.xml  Beans accessed through bean
ejb-refs will automatically and transparently use the correct protocol.
Meaning, if you start off on IIOP, you'll stay on IIOP (unless the call is
colocated).

There have been some fundamental changes to configuration:
1.  no longer has client-interceptors defined
within it.  A new invoker to proxy factory binding has the
client-interceptor definitions for each proxyfactory/invoker binding combo.
2. Also,  configuration tag has been removed from
.
3. jdk1.2.2 support has been removed from standardjboss.xml
4. THere are no more Clustered  definitions in
standardjboss.xml.  They're no longer needed

Let's take a look at the new standardjboss.xml:


   
 
   entity-rmi-invoker
   jboss:service=invoker,type=jrmp
   org.jboss.proxy.ejb.ProxyFactory
   
 
   
 org.jboss.proxy.ejb.HomeInterceptor
 org.jboss.proxy.SecurityInterceptor

org.jboss.proxy.TransactionInterceptor

org.jboss.invocation.InvokerInterceptor
   
   

org.jboss.proxy.ejb.EntityInterceptor
 org.jboss.proxy.SecurityInterceptor

org.jboss.proxy.TransactionInterceptor

org.jboss.invocation.InvokerInterceptor
   
   

org.jboss.proxy.ejb.ListEntityInterceptor
 org.jboss.proxy.SecurityInterceptor

org.jboss.proxy.TransactionInterceptor

org.jboss.invocation.InvokerInterceptor
   
 
   
 

...

The invoker-proxy-binding is a description of the binding between an Invoker
and the EJB proxy factory.  It also contains the Proxy Factory's
configuration.  For RMI ejbs, proxy-factory-config contains a list of
client-interceptors.  If you look at the message-driven-bean
invoker-proxy-factory binding, you'll see that the proxy-factory-config
contains configuration for setting up JMS.

 
   message-driven-bean
   default

org.jboss.ejb.plugins.jms.JMSContainerInvoker
   
DefaultJMSProvider
StdJMSPool
15
1
True

10

  queue/DLQ
  10
  0


   
 


Now, to actually see what the new multi-invokers can do, take a look at
.../testsuite/src/main/org/jboss/test/invokers and
.../testsuite/src/resources/invokers/META-INF.

Let's examine the ejb-jar.xml file and jboss.xml file for this test in the
testsuite.

ejb-jar.xml:


a simple bean managed

RE: [JBoss-dev] http transport

2002-06-24 Thread Holger Engels

On Fri, 21 Jun 2002, Bill Burke wrote:

> Holger, in JBoss 3.0 we have client interceptors, and pluggable transports.
> The invocation has been totally decoupled from the EJB container.  The EJB
> Container is now just an MBean and all EJB invocations go across the JMX
> bus.

Great!

> JBoss 3.1 takes things a bit further.  In 3.1 you can now define multiple
> invokers (transports) per EJB container.  So an EJB container can be
> configured to receive requests from RMI, IIOP, SOAP, HTTP, whatever all at
> the same time.  We'll want to hook your HTTP invoker into this architecture.

Ok, I'm already trying to do that.

> The files and java packages you'll want to look at are as follows, There's
> also a detail email I sent out 2 months ago that is copied later on in this
> email:
> 
> In server module:
> Packages org.jboss.invocation, org.jboss.proxy
> 
> org.jboss.invocation.jrmp.server.JRMPInvoker.java is the main entry point on
> the server side.  It accepts invocation requests and routes them across the
> JMX bus.  I think your HTTP POST protocol can be very simple.  Just marshall
> an Invocation and send it across the wire.  The JRMPInvoker is stateless and
> can route any Invocation.

So far, that's straight forward. I' am writing a HTTPInvoker, that deploys 
a servlet (same hack as jboss.net axis servlet) and forwards invocations 
to the HTTPInvoker. The invoker feeds them into jmx.

> For the client side, you'll need to implement a new
> org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.  This is really the
> "Transport" on the client side.  You'll also need to implement a
> org.jboss.proxy.ejb.ProxyFactory.  The JBoss clustering can be used as an
> example since it has extended JRMPInvokerProxy, ProxyFactory and has its own
> Invoker.  see the cluster module.  All classes under the above packages.

If I understand it correctly, the ProxyFactory is an MBean, running on the 
server, facturing InvokerProxy instances that are moved to and used on the 
client (caller side)!?

> What sucks is that even if you've implemented this stuff, its not very
> helpful because JNDI does not have pluggable transports.

Maybe I am still missing something, but what if the server configuration 
would simply end with the invoker layer. container is server side. invoker 
is the entry point for the container, thus also server side. remaining 
config is _client_side_.

The client (another bean, application-client, web-application) is always 
referring an (ejb|ejb-local|..)-ref (coded name) in its private jndi 
namespace. It is never accessing the server's jndi namespace directly! The 
ejb-ref is the place for configuration bits that:

o identify the target component
o determine the transport protocol
o locate the invoker
o setup the client interceptors

(terms server and client often used in the sense of callee/caller)


This would have some big advantages:

o decoupling of client and server
o no jndi plugins for different protocols required
o jndi is mostly (if not completely) local
o server is responsible for containment and accessibility
o client can connect wherever it wants (also to different appservers in 
  different locations with different protocols)
o client code uses coded names instead of deployment specific jndi-names
o client interceptors are configured per client .. thus server makes no 
  assumptions about the client



Holger



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-24 Thread Bill Burke



> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
> Holger Engels
> Sent: Monday, June 24, 2002 2:37 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] http transport
>
>
> On Fri, 21 Jun 2002, Bill Burke wrote:
>
> > Holger, in JBoss 3.0 we have client interceptors, and pluggable
> transports.
> > The invocation has been totally decoupled from the EJB
> container.  The EJB
> > Container is now just an MBean and all EJB invocations go across the JMX
> > bus.
>
> Great!
>
> > JBoss 3.1 takes things a bit further.  In 3.1 you can now
> define multiple
> > invokers (transports) per EJB container.  So an EJB container can be
> > configured to receive requests from RMI, IIOP, SOAP, HTTP,
> whatever all at
> > the same time.  We'll want to hook your HTTP invoker into this
> architecture.
>
> Ok, I'm already trying to do that.
>
> > The files and java packages you'll want to look at are as
> follows, There's
> > also a detail email I sent out 2 months ago that is copied
> later on in this
> > email:
> >
> > In server module:
> > Packages org.jboss.invocation, org.jboss.proxy
> >
> > org.jboss.invocation.jrmp.server.JRMPInvoker.java is the main
> entry point on
> > the server side.  It accepts invocation requests and routes
> them across the
> > JMX bus.  I think your HTTP POST protocol can be very simple.
> Just marshall
> > an Invocation and send it across the wire.  The JRMPInvoker is
> stateless and
> > can route any Invocation.
>
> So far, that's straight forward. I' am writing a HTTPInvoker,
> that deploys
> a servlet (same hack as jboss.net axis servlet) and forwards invocations
> to the HTTPInvoker. The invoker feeds them into jmx.
>
> > For the client side, you'll need to implement a new
> > org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.  This is
> really the
> > "Transport" on the client side.  You'll also need to implement a
> > org.jboss.proxy.ejb.ProxyFactory.  The JBoss clustering can be
> used as an
> > example since it has extended JRMPInvokerProxy, ProxyFactory
> and has its own
> > Invoker.  see the cluster module.  All classes under the above packages.
>
> If I understand it correctly, the ProxyFactory is an MBean,
> running on the
> server, facturing InvokerProxy instances that are moved to and
> used on the
> client (caller side)!?
>

ProxyFactory is not an MBean.  Just an object right now.  Config code,
creates and attaches ProxyFactorys to each EJB.  (Each EJB is an mbean
though).

> > What sucks is that even if you've implemented this stuff, its not very
> > helpful because JNDI does not have pluggable transports.
>
> Maybe I am still missing something, but what if the server configuration

You currently can only invoke on JNDI remotely through RMI.  JNDI is not
currently an MBean, so you can't invoke on it through a different transport.

> would simply end with the invoker layer. container is server
> side. invoker
> is the entry point for the container, thus also server side. remaining
> config is _client_side_.
>

In 3.1, that's what I'm trying to do.  Separate server configuration from
client configuration.  This is very important when you have multiple invoker
types. (SOAP, IIOP, RMI).

> The client (another bean, application-client, web-application) is always
> referring an (ejb|ejb-local|..)-ref (coded name) in its private jndi
> namespace. It is never accessing the server's jndi namespace
> directly! The
> ejb-ref is the place for configuration bits that:
>

I agree that ejb-refs are a good place to define some things.  If you notice
from the multi-invoker testsute test, you'll see from the configuration that
based on the Invoker type, you can bind different absolute JNDI bindings for
each ejb-ref you have.   So, for example, if you invoke on an IIOP invoker,
the container will pass this information on to other container it interfaces
with.  So if you invoke with IIOP and that EJB calls a finder on one of its
EJB refs, the proxies returned will be IIOP proxies.  Am I making sense?  So
yes, ejb-refs are a good place to stuff certain kinds of information.

> o identify the target component
> o determine the transport protocol
> o locate the invoker

Disagree, discovery is JNDI's responsibility.

> o setup the client interceptors
>
> (terms server and client often used in the sense of callee/caller)
>
>
> This would have some big advantages:
>
> o decoupling of client and server

This has been done for EJBs at least in 3.1  (invoker-proxy bindings) and
needs to be extended to M

RE: [JBoss-dev] http transport

2002-06-26 Thread Holger Engels

On Mon, 24 Jun 2002, Bill Burke wrote:

> ProxyFactory is not an MBean.  Just an object right now.  Config code,
> creates and attaches ProxyFactorys to each EJB.  (Each EJB is an mbean
> though).

Still trying to understand ..

Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a 
InvokerServlet, that forwards invocations to the local invoker. If I 
understand it, the proxy must provide a TransactionPropagationContext 
instance to each Invocation. This has to be "imported" in the servlet 
before the invocation is forwarded to the LocalInvoker.

Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy 
into jndi for every ejb. An then, there's the setup / integration. I need 
some MBean, that sets up the proxy factory and deploys the servlet.

All that together should be packaged into one single deployment unit, e.g. 
a sar. Right?

Holger



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread Sacha Labourey

Hello,

> Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
> InvokerServlet, that forwards invocations to the local invoker. If I

your Invoker should directly forward invocations to the JMX MBeanServer and
not forward it to another local invoker



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread Bill Burke



> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
> Holger Engels
> Sent: Wednesday, June 26, 2002 6:19 AM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] http transport
>
>
> On Mon, 24 Jun 2002, Bill Burke wrote:
>
> > ProxyFactory is not an MBean.  Just an object right now.  Config code,
> > creates and attaches ProxyFactorys to each EJB.  (Each EJB is an mbean
> > though).
>
> Still trying to understand ..
>
> Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
> InvokerServlet, that forwards invocations to the local invoker. If I
> understand it, the proxy must provide a TransactionPropagationContext
> instance to each Invocation. This has to be "imported" in the servlet
> before the invocation is forwarded to the LocalInvoker.
>

No invocation forward.  Invoke directly on the EJB Container through the JMX
Bus.  Take a look at the JRMPInvoker as an example.(Or the local invoker).

> Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy
> into jndi for every ejb. An then, there's the setup / integration. I need
> some MBean, that sets up the proxy factory and deploys the servlet.
>

Yes exactly.  I may have time to break out JNDI into an MBean.  So I could
work on that.

> All that together should be packaged into one single deployment
> unit, e.g.
> a sar. Right?
>

Yes, a sar is perfect for this since there's really no config for this
invoker, right?

> Holger
>
>
>
> ---
> This sf.net email is sponsored by: Jabber Inc.
> Don't miss the IM event of the season | Special offer for OSDN members!
> JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
> ___
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread Bill Burke



> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
> Holger Engels
> Sent: Wednesday, June 26, 2002 6:19 AM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] http transport
>
>
> On Mon, 24 Jun 2002, Bill Burke wrote:
>
> > ProxyFactory is not an MBean.  Just an object right now.  Config code,
> > creates and attaches ProxyFactorys to each EJB.  (Each EJB is an mbean
> > though).
>
> Still trying to understand ..
>
> Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
> InvokerServlet, that forwards invocations to the local invoker. If I
> understand it, the proxy must provide a TransactionPropagationContext
> instance to each Invocation. This has to be "imported" in the servlet
> before the invocation is forwarded to the LocalInvoker.
>

No invocation forward.  Invoke directly on the EJB Container through the JMX
Bus.  Take a look at the JRMPInvoker as an example.(Or the local invoker).

> Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy
> into jndi for every ejb. An then, there's the setup / integration. I need
> some MBean, that sets up the proxy factory and deploys the servlet.
>

Yes exactly.  I may have time to break out JNDI into an MBean.  So I could
work on that.

> All that together should be packaged into one single deployment
> unit, e.g.
> a sar. Right?
>

Yes, a sar is perfect for this since there's really no config for this
invoker, right?

> Holger
>
>
>
> ---
> This sf.net email is sponsored by: Jabber Inc.
> Don't miss the IM event of the season | Special offer for OSDN members!
> JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
> ___
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread Sacha Labourey

> Yes, a sar is perfect for this since there's really no config for this
> invoker, right?

you now what we need? It is an XML file for config with the JAR *inside the
xml in a CDATA section (as MIME encoded for example)!! ;)

We don't care about the extra-size anyway. So, instead of having an XML
insider a JAR we have a JAR inside XML. You want to update the code? OK,
remove the CDATA section, add the JAR to extend the classpath and simply
deploy the XML file without the CDATA. But then, it is the standard case.



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread marc fleury

|Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
|InvokerServlet, that forwards invocations to the local invoker. If I

use the JMX bus directly,

|understand it, the proxy must provide a TransactionPropagationContext
|instance to each Invocation. This has to be "imported" in the servlet
|before the invocation is forwarded to the LocalInvoker.

The transaction is not mandatory, but if it is there then yes it has to be
"imported" (this is a weakness, necessary I am told (?) of the current
transaction engine design).

|Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy
|into jndi for every ejb. An then, there's the setup / integration. I need
|some MBean, that sets up the proxy factory and deploys the servlet.

I am thinking, bill, we should do a "factory bind" in JNDI that knows what
protocol to add in the invoker but the "proxy" stuff should be generalized,
the interface input generalized.  This way you would just

context.lookup("http/myMBean") or some way to specify what transport you
want and we return to you the right invoker in the java stack with the
interface _of the MBean_ not just EJB.  This way you are talking to you
remote server MBean through the HTTP protocol, and tunnelling through
anything this way .  Java interfaces to web services. simply done,

|All that together should be packaged into one single deployment unit, e.g.
|a sar. Right?

yes

marcf

|Holger

pull this off holger, pull it off,

marcf
|
|
|
|---
|This sf.net email is sponsored by: Jabber Inc.
|Don't miss the IM event of the season | Special offer for OSDN members!
|JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
|___
|Jboss-development mailing list
|[EMAIL PROTECTED]
|https://lists.sourceforge.net/lists/listinfo/jboss-development



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabberConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread Bill Burke



> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of marc
> fleury
> Sent: Wednesday, June 26, 2002 12:55 PM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] http transport
>
>
> |Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
> |InvokerServlet, that forwards invocations to the local invoker. If I
>
> use the JMX bus directly,
>
> |understand it, the proxy must provide a TransactionPropagationContext
> |instance to each Invocation. This has to be "imported" in the servlet
> |before the invocation is forwarded to the LocalInvoker.
>
> The transaction is not mandatory, but if it is there then yes it has to be
> "imported" (this is a weakness, necessary I am told (?) of the current
> transaction engine design).
>

This weakness needs to be corrected.

> |Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy
> |into jndi for every ejb. An then, there's the setup / integration. I need
> |some MBean, that sets up the proxy factory and deploys the servlet.
>
> I am thinking, bill, we should do a "factory bind" in JNDI that knows what

I think we may have to use JNDI properties to implement this i.e.

jndi.properties:

java.naming.factory.initial=org.jnp.interfaces.HTTPNamingContextFactory
java.naming.provider.url=http://yomama.com/JrmpInvoker

Also, this may be the best solution anyways.  I really want to avoid any
proprietary configuration on the client side.

> protocol to add in the invoker but the "proxy" stuff should be
> generalized,
> the interface input generalized.  This way you would just
>
> context.lookup("http/myMBean") or some way to specify what transport you
> want and we return to you the right invoker in the java stack with the
> interface _of the MBean_ not just EJB.  This way you are talking to you
> remote server MBean through the HTTP protocol, and tunnelling through
> anything this way .  Java interfaces to web services. simply done,
>

I also agree that this whole proxy mess needs to be non-EJB specific and
generic to MBeans.  The first step though is creating an HTTPInvokerProxy
and HTTPInvoker.

Maybe based on the invocation type, you could reference a binding specific
to that transport meaning, if you do context.lookup("myMBean") on a HTTP
protocol, you get the HTTP MBean proxy.  I've already done this sort of this
with EJBs.

> |All that together should be packaged into one single deployment
> unit, e.g.
> |a sar. Right?
>
> yes
>
> marcf
>
> |Holger
>
> pull this off holger, pull it off,
>
> marcf
> |
> |
> |
> |---
> |This sf.net email is sponsored by: Jabber Inc.
> |Don't miss the IM event of the season | Special offer for OSDN members!
> |JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
> |___
> |Jboss-development mailing list
> |[EMAIL PROTECTED]
> |https://lists.sourceforge.net/lists/listinfo/jboss-development
>
>
>
> ---
> This sf.net email is sponsored by: Jabber Inc.
> Don't miss the IM event of the season | Special offer for OSDN members!
> JabberConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
> ___
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development



---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabberConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



Re: [JBoss-dev] http transport

2002-06-26 Thread David Jencks

On 2002.06.26 14:11:38 -0400 Bill Burke wrote:
> 
> 
> > -Original Message-
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of marc
> > fleury
> > Sent: Wednesday, June 26, 2002 12:55 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [JBoss-dev] http transport
> >
> >
> > |Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
> > |InvokerServlet, that forwards invocations to the local invoker. If I
> >
> > use the JMX bus directly,
> >
> > |understand it, the proxy must provide a TransactionPropagationContext
> > |instance to each Invocation. This has to be "imported" in the servlet
> > |before the invocation is forwarded to the LocalInvoker.
> >
> > The transaction is not mandatory, but if it is there then yes it has to
> be
> > "imported" (this is a weakness, necessary I am told (?) of the current
> > transaction engine design).
> >
> 
> This weakness needs to be corrected.

JCA 1.5 has a transaction inflow model and a work inflow model.  I have
initial prototype implementations of these.  The work inflow model is
designed to allow the app server to manage thread pooling for work
requested by external systems.  I was wondering if we should use this for
all incoming requests.

David Jencks

> 
> > |Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy
> > |into jndi for every ejb. An then, there's the setup / integration. I
> need
> > |some MBean, that sets up the proxy factory and deploys the servlet.
> >
> > I am thinking, bill, we should do a "factory bind" in JNDI that knows
> what
> 
> I think we may have to use JNDI properties to implement this i.e.
> 
> jndi.properties:
> 
> java.naming.factory.initial=org.jnp.interfaces.HTTPNamingContextFactory
> java.naming.provider.url=http://yomama.com/JrmpInvoker
> 
> Also, this may be the best solution anyways.  I really want to avoid any
> proprietary configuration on the client side.
> 
> > protocol to add in the invoker but the "proxy" stuff should be
> > generalized,
> > the interface input generalized.  This way you would just
> >
> > context.lookup("http/myMBean") or some way to specify what transport
> you
> > want and we return to you the right invoker in the java stack with the
> > interface _of the MBean_ not just EJB.  This way you are talking to you
> > remote server MBean through the HTTP protocol, and tunnelling through
> > anything this way .  Java interfaces to web services. simply done,
> >
> 
> I also agree that this whole proxy mess needs to be non-EJB specific and
> generic to MBeans.  The first step though is creating an HTTPInvokerProxy
> and HTTPInvoker.
> 
> Maybe based on the invocation type, you could reference a binding
> specific
> to that transport meaning, if you do context.lookup("myMBean") on a HTTP
> protocol, you get the HTTP MBean proxy.  I've already done this sort of
> this
> with EJBs.
> 
> > |All that together should be packaged into one single deployment
> > unit, e.g.
> > |a sar. Right?
> >
> > yes
> >
> > marcf
> >
> > |Holger
> >
> > pull this off holger, pull it off,
> >
> > marcf
> > |
> > |
> > |
> > |---
> > |This sf.net email is sponsored by: Jabber Inc.
> > |Don't miss the IM event of the season | Special offer for OSDN
> members!
> > |JabConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
> > |___
> > |Jboss-development mailing list
> > |[EMAIL PROTECTED]
> > |https://lists.sourceforge.net/lists/listinfo/jboss-development
> >
> >
> >
> > ---
> > This sf.net email is sponsored by: Jabber Inc.
> > Don't miss the IM event of the season | Special offer for OSDN members!
> > JabberConf 2002, Aug. 20-22, Keystone, CO
> http://www.jabberconf.com/osdn
> > ___
> > Jboss-development mailing list
> > [EMAIL PROTECTED]
> > https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 
> 
> ---
> This sf.net email is sponsored by: Jabber Inc.
> Don't miss the IM event of the season | Special offer for OSDN members! 
> JabberConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
> ___
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> 


---
This sf.net email is sponsored by: Jabber Inc.
Don't miss the IM event of the season | Special offer for OSDN members! 
JabberConf 2002, Aug. 20-22, Keystone, CO http://www.jabberconf.com/osdn
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-26 Thread Holger Engels

On Wed, 26 Jun 2002, Bill Burke wrote:

> 
> 
> > -Original Message-
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of marc
> > fleury
> > Sent: Wednesday, June 26, 2002 12:55 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [JBoss-dev] http transport
> >
> >
> > |Seems like I don't need an HTTPInvoker. Only an HTTPInvokerProxy and a
> > |InvokerServlet, that forwards invocations to the local invoker. If I
> >
> > use the JMX bus directly,
> >
> > |understand it, the proxy must provide a TransactionPropagationContext
> > |instance to each Invocation. This has to be "imported" in the servlet
> > |before the invocation is forwarded to the LocalInvoker.
> >
> > The transaction is not mandatory, but if it is there then yes it has to be
> > "imported" (this is a weakness, necessary I am told (?) of the current
> > transaction engine design).
> >
> 
> This weakness needs to be corrected.
> 
> > |Also, there must be a HTTPProxyFactory, that binds an HTTPInvokerProxy
> > |into jndi for every ejb. An then, there's the setup / integration. I need
> > |some MBean, that sets up the proxy factory and deploys the servlet.
> >
> > I am thinking, bill, we should do a "factory bind" in JNDI that knows what
> 
> I think we may have to use JNDI properties to implement this i.e.
> 
> jndi.properties:
> 
> java.naming.factory.initial=org.jnp.interfaces.HTTPNamingContextFactory
> java.naming.provider.url=http://yomama.com/JrmpInvoker
> 
> Also, this may be the best solution anyways.  I really want to avoid any
> proprietary configuration on the client side.

Coding the protocol into the jndi-name is a good idea, but I'm still not 
confident with this approach. I see it this way:

o the server hosts components and makes them accessible through rmi, iiop, 
  http, .. (different invokers)
o serverside interceptors and container are configured per component on 
  the server. Invokers are configured as part of the server configuration.
o that's the server's part. nothing more!

o the client / caller does a lookup in its local jndi namespace with a 
  coded name. The coded name is declared somewhere as an ejb-ref, res-ref,
  *-ref
o the declaration of this *-ref is parameterized in a jboss specific 
  descriptor (jboss.xml):
  + protocoll (InvokerProxy)
  + identifier of the target component (jndi-name)
  + both, the protocol and the address of the component can be coded into
a single jndi-name, by using a special url context factory for every
protocol or by using a subcontext
  + client side interceptors (there are interceptors, that can _never_ be
configured on the server / per component / per invoker (think of a
recording interceptor)

> I also agree that this whole proxy mess needs to be non-EJB specific and
> generic to MBeans.  The first step though is creating an HTTPInvokerProxy
> and HTTPInvoker.

The HTTPInvoker is a servlet or httpd. There's no lookup of this invoker, 
only invocations, that are sent to the servlet.

how many remote calls are involved in a simple acces to a bean method:

1. lookup
2. create
3. bean

why not skip the first one? just give the client a proxy, wether the 
target component is accessible or not. the invocation of create can fail
anyway. there's no way, how we could assure, that a create works, if the 
lookup has worked. thus imo there's no problem, if we skip the lookup.

That's like communication happens in real life. If I send you a message, 
you won't give me the pencil, I have to use. I don't lookup your address 
at your door. I look it up in my private addressbook. If I send the 
message, I don't know, if the address is correct. However, I'll notice if 
it was incorrect.

Holger



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-27 Thread Bill Burke

Holger, your ideas are very interesting and thought provoking.  Although I
disagree with a lot of them (read further), I believe that this is a good
conversion and something very cool will come out of it.

> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]On Behalf Of
> Holger Engels
> Sent: Thursday, June 27, 2002 2:36 AM
> To: [EMAIL PROTECTED]
> Subject: RE: [JBoss-dev] http transport
>
>
> On Wed, 26 Jun 2002, Bill Burke wrote:
>
> >
> >
> > > -Original Message-
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED]]On
> Behalf Of marc
> > > fleury
> > > Sent: Wednesday, June 26, 2002 12:55 PM
> > > To: [EMAIL PROTECTED]
> > > Subject: RE: [JBoss-dev] http transport
> > >
> > >
> > > |Seems like I don't need an HTTPInvoker. Only an
> HTTPInvokerProxy and a
> > > |InvokerServlet, that forwards invocations to the local invoker. If I
> > >
> > > use the JMX bus directly,
> > >
> > > |understand it, the proxy must provide a TransactionPropagationContext
> > > |instance to each Invocation. This has to be "imported" in the servlet
> > > |before the invocation is forwarded to the LocalInvoker.
> > >
> > > The transaction is not mandatory, but if it is there then yes
> it has to be
> > > "imported" (this is a weakness, necessary I am told (?) of the current
> > > transaction engine design).
> > >
> >
> > This weakness needs to be corrected.
> >
> > > |Also, there must be a HTTPProxyFactory, that binds an
> HTTPInvokerProxy
> > > |into jndi for every ejb. An then, there's the setup /
> integration. I need
> > > |some MBean, that sets up the proxy factory and deploys the servlet.
> > >
> > > I am thinking, bill, we should do a "factory bind" in JNDI
> that knows what
> >
> > I think we may have to use JNDI properties to implement this i.e.
> >
> > jndi.properties:
> >
> > java.naming.factory.initial=org.jnp.interfaces.HTTPNamingContextFactory
> > java.naming.provider.url=http://yomama.com/JrmpInvoker
> >
> > Also, this may be the best solution anyways.  I really want to avoid any
> > proprietary configuration on the client side.
>
> Coding the protocol into the jndi-name is a good idea, but I'm still not
> confident with this approach. I see it this way:
>

That's not what I meant.  IMHO, coding the protocol into the jndi-name is a
hack.  i.e. ctx.lookup("http/foo")

I think how you communicate to jndi should be described in the
jndi.properties file.  But how you get references to other objects should be
different.

I would rather have one of these possible solutions:

1. Depending the transport type, a different value for "foo" is returned.
If you do a ctx.lookup("foo") and you're talking HTTP, you get a foo HTTP
proxy back to communicate.

2. Let the application developer decide how things are mapped in JNDI.  For
instance, we can recommend that they bind a invoker-proxy binding into jndi
as "http/foo" , iiop as "iiop/foo".  Am I making sense?

> o the server hosts components and makes them accessible through
> rmi, iiop,
>   http, .. (different invokers)
> o serverside interceptors and container are configured per component on
>   the server. Invokers are configured as part of the server configuration.

Right now, client and container and invoker configurations are all separate.
This allows us to have multiple transports per EJB(later per MBean too).

> o that's the server's part. nothing more!
>

Not true at all.  The server has to have knowledge of the client-side
interceptors.  Where you idea breaks down is when an method returns a
different EJB or a collection of EJBs of different types.  How will your
ideas work then?  How will the correct client-side interceptor chain and
transport and endpoint be attached to the EJB refs contained in these
arbitrary collection objects?  When I was implementing the multi-invoker
stuff, I played with the idea of having generic EJB refs, but the idea fell
apart in this scenario.

Also, many server-side interceptors require a mirror client-side interceptor
to work.  Security, Transactions and especially Clustering fall into this
category.

> o the client / caller does a lookup in its local jndi namespace with a
>   coded name. The coded name is declared somewhere as an ejb-ref, res-ref,
>   *-ref
> o the declaration of this *-ref is parameterized in a jboss specific
>   descriptor (jboss.xml):
>   + protocoll (InvokerProxy)
>   + identifier of the target component (jndi-name)

RE: [JBoss-dev] http transport

2002-06-27 Thread Sacha Labourey

Just a small point: do we agree that independing on the protocol used to
communicate with JNDI, the proxy needs to be obtained in a specific way
(like now, through standard TCP) to bootstrap.

> -Message d'origine-
> De : [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]De la part de Bill
> Burke
> Envoye : jeudi, 27 juin 2002 10:11
> A : [EMAIL PROTECTED]
> Objet : RE: [JBoss-dev] http transport
>
>
> Holger, your ideas are very interesting and thought provoking.  Although I
> disagree with a lot of them (read further), I believe that this is a good
> conversion and something very cool will come out of it.
>
> > -Original Message-
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of
> > Holger Engels
> > Sent: Thursday, June 27, 2002 2:36 AM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [JBoss-dev] http transport
> >
> >
> > On Wed, 26 Jun 2002, Bill Burke wrote:
> >
> > >
> > >
> > > > -Original Message-
> > > > From: [EMAIL PROTECTED]
> > > > [mailto:[EMAIL PROTECTED]]On
> > Behalf Of marc
> > > > fleury
> > > > Sent: Wednesday, June 26, 2002 12:55 PM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: RE: [JBoss-dev] http transport
> > > >
> > > >
> > > > |Seems like I don't need an HTTPInvoker. Only an
> > HTTPInvokerProxy and a
> > > > |InvokerServlet, that forwards invocations to the local
> invoker. If I
> > > >
> > > > use the JMX bus directly,
> > > >
> > > > |understand it, the proxy must provide a
> TransactionPropagationContext
> > > > |instance to each Invocation. This has to be "imported" in
> the servlet
> > > > |before the invocation is forwarded to the LocalInvoker.
> > > >
> > > > The transaction is not mandatory, but if it is there then yes
> > it has to be
> > > > "imported" (this is a weakness, necessary I am told (?) of
> the current
> > > > transaction engine design).
> > > >
> > >
> > > This weakness needs to be corrected.
> > >
> > > > |Also, there must be a HTTPProxyFactory, that binds an
> > HTTPInvokerProxy
> > > > |into jndi for every ejb. An then, there's the setup /
> > integration. I need
> > > > |some MBean, that sets up the proxy factory and deploys the servlet.
> > > >
> > > > I am thinking, bill, we should do a "factory bind" in JNDI
> > that knows what
> > >
> > > I think we may have to use JNDI properties to implement this i.e.
> > >
> > > jndi.properties:
> > >
> > >
> java.naming.factory.initial=org.jnp.interfaces.HTTPNamingContextFactory
> > > java.naming.provider.url=http://yomama.com/JrmpInvoker
> > >
> > > Also, this may be the best solution anyways.  I really want
> to avoid any
> > > proprietary configuration on the client side.
> >
> > Coding the protocol into the jndi-name is a good idea, but I'm still not
> > confident with this approach. I see it this way:
> >
>
> That's not what I meant.  IMHO, coding the protocol into the
> jndi-name is a
> hack.  i.e. ctx.lookup("http/foo")
>
> I think how you communicate to jndi should be described in the
> jndi.properties file.  But how you get references to other
> objects should be
> different.
>
> I would rather have one of these possible solutions:
>
> 1. Depending the transport type, a different value for "foo" is returned.
> If you do a ctx.lookup("foo") and you're talking HTTP, you get a foo HTTP
> proxy back to communicate.
>
> 2. Let the application developer decide how things are mapped in
> JNDI.  For
> instance, we can recommend that they bind a invoker-proxy binding
> into jndi
> as "http/foo" , iiop as "iiop/foo".  Am I making sense?
>
> > o the server hosts components and makes them accessible through
> > rmi, iiop,
> >   http, .. (different invokers)
> > o serverside interceptors and container are configured per component on
> >   the server. Invokers are configured as part of the server
> configuration.
>
> Right now, client and container and invoker configurations are
> all separate.
> This allows us to have multiple transports per EJB(later per MBean too).
>
> > o that's the server's part. nothing more!
> >
>
> Not true at all.  The server has to have knowledge of the client

RE: [JBoss-dev] http transport

2002-06-27 Thread Holger Engels

On Thu, 27 Jun 2002, Bill Burke wrote:

> Holger, your ideas are very interesting and thought provoking.  Although I
> disagree with a lot of them (read further), I believe that this is a good
> conversion and something very cool will come out of it.

Actually I've already learned from this discussion ;-)

> 
> That's not what I meant.  IMHO, coding the protocol into the jndi-name is a
> hack.  i.e. ctx.lookup("http/foo")
> 
> I think how you communicate to jndi should be described in the
> jndi.properties file.  But how you get references to other objects should be
> different.
> 
> I would rather have one of these possible solutions:
> 
> 1. Depending the transport type, a different value for "foo" is returned.
> If you do a ctx.lookup("foo") and you're talking HTTP, you get a foo HTTP
> proxy back to communicate.
> 
> 2. Let the application developer decide how things are mapped in JNDI.  For
> instance, we can recommend that they bind a invoker-proxy binding into jndi
> as "http/foo" , iiop as "iiop/foo".  Am I making sense?

You mean no url provider, but jndi.properties (=environment)? OK. But I 
can't live with global jndi.properties. I need them on a per *-ref basis, 
because the components I connect are spreaded across several different 
application servers.

> > o the server hosts components and makes them accessible through
> > rmi, iiop,
> >   http, .. (different invokers)
> > o serverside interceptors and container are configured per component on
> >   the server. Invokers are configured as part of the server configuration.
> 
> Right now, client and container and invoker configurations are all separate.
> This allows us to have multiple transports per EJB(later per MBean too).
> 
> > o that's the server's part. nothing more!
> 
> Not true at all.  The server has to have knowledge of the client-side
> interceptors.  Where you idea breaks down is when an method returns a
> different EJB or a collection of EJBs of different types.  How will your
> ideas work then?  How will the correct client-side interceptor chain and
> transport and endpoint be attached to the EJB refs contained in these
> arbitrary collection objects?  When I was implementing the multi-invoker
> stuff, I played with the idea of having generic EJB refs, but the idea fell
> apart in this scenario.

Good point! Never thought of that. However, the result of an invocation 
are handles or something similar, right?. Can we put the configuration, 
that is comming from the server into these handles? Thus a proxy is 
partially configured from the client (client chooses the transport and 
might in very few cases add its own interceptors) and mostly from the 
information, that comes with the handle?

> Also, many server-side interceptors require a mirror client-side interceptor
> to work.  Security, Transactions and especially Clustering fall into this
> category.
> 
> This just goes against location transparency and I can't see why anybody
> would want to hard-code the address of each component in their system, or to
> manage and know what protocols and what bindings and what client-side
> interceptors are required.   Client side configuration just does not scale.
> Too many config files in separate places to manage.  People want centralized
> config, especially ISVs.

I want to keep these addresses out of my code, thus only use *-refs (call 
it nicknames). But these nicknames have to be mapped to something, that 
fully identifies the target. For the server doesn't know the client, but 
the client knows, what components are there on the server, this mapping 
has to be done on the client? I cant send an email to a nickname. I have 
to lookup the email address.

OK, you convinced me, that most of the interceptor chain has to be 
configured from the server. My point is now, that I don't want the lookup 
in the server's jndi-namespace, before invoking the create method.

1. an invoker proxy is choosen on the client
2. the client knows the address of the invoker (always the same)
3. the client knows what component it wants to connect to (jndi-name)
4. this is all, we need to know, in order to send the create invocation 
5. the jndi-name is passed with the invocation of create. the result is 
   a handle carrying all information, that is required to setup the client
   side interceptor chain.

What am I missing?

Holger



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-27 Thread Holger Engels

On Thu, 27 Jun 2002, Sacha Labourey wrote:

> Just a small point: do we agree that independing on the protocol used to
> communicate with JNDI, the proxy needs to be obtained in a specific way
> (like now, through standard TCP) to bootstrap.

Yes. But if we need to bootsrap the jndi communication, we can skip this 
jndi lookup and just send the create invocation to the invoker. How the 
invokers can be accessed must either be "wellknown" or somehow configured 
on the client.

Please, please tell me, for what do we need server side jndi content on 
the client?

Holger



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-27 Thread Sacha Labourey

> Yes. But if we need to bootsrap the jndi communication, we can skip this
> jndi lookup and just send the create invocation to the invoker. How the
> invokers can be accessed must either be "wellknown" or somehow configured
> on the client.

yes, the problem is that I am not sure (in fact I am pretty sure that it is
not possible with RMI/JRMP) that it is possible to have "well-known" ports
for a very simply reason: SocketFactory can be set for the RMI invoker on
the server side for example. If I remember well, this well-known thing is
possible  with CORBA.

> Please, please tell me, for what do we need server side jndi content on
> the client?

?!? MyHome home = ctx.lookup (MyHome.JNDI_NAME); ?!?

Do I understand your question?



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-27 Thread Dave Smith

Snip ...

> You mean no url provider, but jndi.properties (=environment)? OK. But I 
> can't live with global jndi.properties. I need them on a per *-ref basis, 
> because the components I connect are spreaded across several different 
> application servers.
> 

It would seem that you would still want a global JNDI directory with 1
point of entry. This could be a JNDI  mbean that does nothing else than
sit infront of all of your other application servers and keeps
references to all the other beans in the other applcation severs JNDI
directories. When a request came in it could lookup the actual
reference, wrap in up in a proxy and hand it back. The proxy would then
know which application server it would talk to. 

I think hard coding aliases into *-refs is a bad idea. It would be a
maintence nightmare. A global lookup location would be way easier. So
your jndi.properties would only have to get you to the global JNDI
directory at boot time. These properties could change based on each
client logging in and loading a profile.

Crawling back under my rock ...







---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-27 Thread Holger Engels

On Thu, 27 Jun 2002, Sacha Labourey wrote:

> > Yes. But if we need to bootsrap the jndi communication, we can skip this
> > jndi lookup and just send the create invocation to the invoker. How the
> > invokers can be accessed must either be "wellknown" or somehow configured
> > on the client.
> 
> yes, the problem is that I am not sure (in fact I am pretty sure that it is
> not possible with RMI/JRMP) that it is possible to have "well-known" ports
> for a very simply reason: SocketFactory can be set for the RMI invoker on
> the server side for example. If I remember well, this well-known thing is
> possible  with CORBA.
> 
> > Please, please tell me, for what do we need server side jndi content on
> > the client?
> 
> ?!? MyHome home = ctx.lookup (MyHome.JNDI_NAME); ?!?
> 
> Do I understand your question?
> 

That is local jndi. I am looking up the "coded name" in my local 
jndi-namespace. The coded name is defined as an ejb-ref in my 
application-client.xml. what I get is something, that feels like a proxy 
to the ejb's home. the ejb-ref must be configured with:

o an url, that points to the invoker (protocol, server, "context")
o the jndi-name of the bean
o optional client interceptors

if I invoke create(..) on this proxy, the invocation is stuffed with the 
jndi-name and forwarded to the invoker (url). the invoker returns a 
handle, that contains all configuration, that is required to setup the 
invoker proxy and the client interceptors.

So now tell me, for what do I need the server side jndi content on the 
client? Maybe, I'm missing something ..

connecting to a cluster might need some more configuration (there are more 
than one servers/invokers). but it's not harder to connect to a clustered 
invoker than to bootstrap clustered jndi access.

restriction: all home methods (create, finders, entity) won't have the 
interceptor configuration from the server.

Holger



---
Sponsored by:
ThinkGeek at http://www.ThinkGeek.com/
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] http transport

2002-06-27 Thread Holger Engels

On Thu, 27 Jun 2002, Holger Engels wrote:

> That is local jndi. I am looking up the "coded name" in my local 
> jndi-namespace. The coded name is defined as an ejb-ref in my 
> application-client.xml. what I get is something, that feels like a proxy 
> to the ejb's home. the ejb-ref must be configured with:
> 
> o an url, that points to the invoker (protocol, server, "context")
> o the jndi-name of the bean
> o optional client interceptors
> 
> if I invoke create(..) on this proxy, the invocation is stuffed with the 
> jndi-name and forwarded to the invoker (url). the invoker returns a 
> handle, that contains all configuration, that is required to setup the 
> invoker proxy and the client interceptors.
> 
> So now tell me, for what do I need the server side jndi content on the 
> client? Maybe, I'm missing something ..
> 
> connecting to a cluster might need some more configuration (there are more 
> than one servers/invokers). but it's not harder to connect to a clustered 
> invoker than to bootstrap clustered jndi access.
> 
> restriction: all home methods (create, finders, entity) won't have the 
> interceptor configuration from the server.

Ok, I can see it now. Fetching the complete invoker proxy from the server 
is the better idea. It works also with other component types (without home 
interfaces).

Still want the mapping from coded names to jndi-names in my 
application-client.xml and still want to have the possibility to specify 
additional interceptors for *-refs.

Holger



---
This sf.net email is sponsored by:ThinkGeek
Caffeinated soap. No kidding.
http://thinkgeek.com/sf
___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development