jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Meschberger <Felix.Meschber...@day.com>
Subject Re: deploying to JBoss
Date Tue, 13 Dec 2005 10:05:59 GMT
Hi John,

John Mazzitelli wrote:

 >  I tried that but failed due to the repository impl. class not being 
serializable:

Have you taken a look at the  BindableRepository class ? This class is 
Referencable - a requirement fo some JNDI context providers - and 
serializable.

>         <init-param>
>             <param-name>jndi-bind-remote</param-name>
>             <param-value>true</param-value>
>         </init-param>
>
> If true, the servlet would then know that it should bind the *remote* repo object to
the JNDI context, as opposed to the repository object reference itself.
>   
I do not think registering the remote object to the JNDI is in general a 
good idea - as always your mileage may vary. Especially considering that 
most of the applications accessing resources from JNDI within an 
application server are running locally to the application server and use 
JNDI to access deployed resources such as JDBC data sources - as always, 
there are exceptions if you for example access an LDAP server using the 
JNDI-API.

Regarding the startup of the repository, I think, that starting it from 
within a web application is a workaround for servlet containers without 
resource management support. In the case of JBoss I would suggest 
deploying the repository as a resource archive.
> In general, this will allow you to bind the remote repo object to *any* JNDI tree - which
would be useful if that JNDI tree is remotely accessible.
>
> In my case, it would allow me to bind the remoted interface (which is inherently serializable)
to a JBoss JNP naming service (which then automatically gives you remote access since you
could then use the JNP client from a remote VM to get the repo).  
>
> As it stands, it looks like you have no choice wrt where you bind the remote object -
the RMI Registry (via the rmi-XXX servlet init parameters).  The rmi-XXX options trigger the
servlet to end up calling "LocateRegistry.createRegistry" - this under the covers uses the
SUN JNDI impl 
I suppose you mean "SUN RMI impl" and not "SUN JNDI impl", as 
RegistryImpl is part of the RMI implementation.
> "sun.rmi.registry.RegistryImpl" when running with SUN's JRE).  I don't want to use that
- I want the JNP service to be my remote registry.
>
> Unless I'm missing something, which is entirely possible :-) I can't see how I can get
the remote repo unless I register it in the RMI Registry.
>   
Well, IMHO the RepositoryStartupServlet serves two purposes: It shows 
how to write a servlet to start a repository and register it with JNDI 
and/or RMI registries and second it is the basis for the contributed 
WebDAV servers. Using the RepositoryStartupServlet is by no means the 
only way to start, access and deploy a repository from within a web 
application.

Rather, I would suggest to use application server resource deployment 
functionality wherever possible. This would also resolve the issue of 
cross-web application dependencies, which I consider unstable.

So, if you create your own resource deployment, you are of course free 
to deploy whatever object you like (RepositoryImpl, BindableRepository, 
ServerRepository) to whatever registry you like :-)

Hope, this sheds some lights on the issues - and I did not pack too many 
errors into the message.

Regards
Felix


Mime
View raw message