Nevermind!
I had an errant copy of jcr-1.0.jar in my EJB. My final working
configuration, in order to close this issue:
jackrabbit-jca-1.5.4.jar, jackrabbit-jcr-rmi-1.5.0.jar, and
jcr-1.0.jar in $JBOSS_HOME/server/default/lib
jackrabbit-jca-1.5.4.rar, jackrabbit-werver.war, jcr-ds.xml in
$JBOSS_HOME/server/default/deploy
NO jackrabbit components in the EAR, EJB or WEB packages. Referenced
as <scope>provided</scope> in the Maven dependencies.
Sorry for the noise.
-robert.
On Apr 11, 2009, at 4:08 PM, Robert Morse wrote:
Hello!
I've run into a problem in getting a Session for Jackrabbit.
My environment:
Jackrabbit 1.5.4, JBoss 4.2.3.GA (jdk6), Mac OS x 10.5.6, MySql,
Seam 2.1.1.GA
This is an EAR deployment.
I followed the steps in the Wiki for getting Jackrabbit running (http://wiki.apache.org/jackrabbit/JackrabbitOnJBoss
), and it appears to be working.
I can also connect via WebDav to the repository using Mac's normal
facilities. I'm mentioning this only to establish that I think
JackRabbit is installed and
running correctly.
Further in the Wiki entry, it describes accessing the Repository via
JNDI, and this is where I run into a snag. After some trial and
error, I have the following
deployed:
jackrabbit-jcr-rmi-1.5.0.jar, jcr-1.0.jar in $JBOSS_HOME/server/
default/lib.
jackrabbit-jca-1.5.4.rar, jackrabbit-server.war, jcr-ds.xml and my
application EAR in $JBOSS_HOME/server/default/deploy
If I follow the Wiki example exactly, I get:
15:06:01,802 ERROR [STDERR] java.lang.ClassCastException:
org.apache.jackrabbit.jca.JCARepositoryHandle cannot be cast to
javax.jcr.Repository
during the
Repository repo = (Repository) ctx.lookup("java:jcr/local") ;
So, I made the "obvious" choice and changed the type to
JCARepositoryHandle,
JCARepositoryHandle jrh = (JCARepositoryHandle) ctx.lookup("java:jcr/
local") ;
and got this. This error makes no sense to me.
15:13:36,004 ERROR [STDERR] java.lang.ClassCastException:
org.apache.jackrabbit.jca.JCARepositoryHandle cannot be cast to
org.apache.jackrabbit.jca.JCARepositoryHandle
Here's the original (broken) code that tries to get a Session. It
fails with the first exception.
Not sure what I'm missing, but would appreciate any and all comments
and pointers. Thanks!
static public Session getJackrabbitSession() throws
RepositoryException
{
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "jnp://localhost:1099");
env.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
try
{
InitialContext ctx = new InitialContext(env);
Repository repo = (Repository) ctx.lookup("java:jcr/local");
Credentials cred = new SimpleCredentials("user", new char[]
{ 'p', 'w', 'd' });
return repo.login(cred);
}
catch (NamingException ex)
{
ex.printStackTrace();
}
return null;
}
The human mind is an iterative processor, it never does anything
right the first time. What it does well is to make improvements on
every iteration (deMarco)
The human mind is an iterative processor, it never does anything right
the first time. What it does well is to make improvements on every
iteration (deMarco)