I did this:
context.mxl
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/mavenproject3">
<Realm className="realm.test.MyDataSourceRealm"
dataSourceName="MyDataSource"
userTable="usertable"
userNameCol="usercol"
userCredCol="passcol"
userRoleTable="roltable"
roleNameCol="rolcol"/>
</Context>
MyDataSourceRealm.java:
package realm.test;
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class MyDataSourceRealm extends
org.apache.catalina.realm.DataSourceRealm{
@Override
protected Connection open() {
DataSource dataSource = null;
try{
dataSource = (DataSource)new
InitialContext().lookup("java:openejb/Resource/" + dataSourceName);
return dataSource.getConnection();
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
}
And i always get ClassNotFoundException:
Severe: Begin event threw exception
java.lang.ClassNotFoundException: realm.test.KxDataSourceRealm
My class is in my same project, and the package is correct, i dont know why
my class cannot be found.
What can be??
Thanks
2012/5/14 Romain Manni-Bucau <[email protected]>
> here the issue https://issues.apache.org/jira/browse/TOMEE-191
>
> here a sample
> http://openejb.apache.org/examples-trunk/realm-in-tomee/README.html
>
> - Romain
>
>
> 2012/5/15 Romain Manni-Bucau <[email protected]>
>
> > seems using org.apache.catalina.realm.DataSourceRealm doesn't work out of
> > the box (currently hacking on it).
> >
> > extending it and
> > overriding org.apache.catalina.realm.DataSourceRealm#open() to make:
> > DataSource dataSource = (DataSource)new
> > InitialContext().lookup("java:openejb/Resource/" + dataSourceName);
> should
> > be enough as a workaround.
> >
> > - Romain
> >
> >
> >
> > 2012/5/14 Jean-Louis MONTEIRO <[email protected]>
> >
> >> That seems correct to me.
> >> Can you try adding the property localDataSource=true
> >> to the following realm definition ?
> >>
> >> <Realm
> >> className="org.apache.catalina.realm.DataSourceRealm"
> >> dataSourceName="MyDataSource"
> >> userTable="userTable"
> >> userNameCol="user"
> >> userCredCol="pass"
> >> userRoleTable="rolTable"
> >> roleNameCol="rol"/>
> >>
> >> That should hopefully do the trick as Tomcat will lookup to the right
> >> context.
> >> The only issue that may happen is the order. I mean, may be Tomcat gonna
> >> lookup the resource before TomEE fully initialize and register the
> >> datasource.
> >>
> >> Anyway, let's proceed with the property. We can continue investigating
> >> after.
> >>
> >> Jean-Louis
> >>
> >> 2012/5/14 José Luis Cetina <[email protected]>
> >>
> >> > Hi my web app use openJPA for database CRUD, i configure like this:
> >> >
> >> > tomee.xml:
> >> >
> >> > <Resource id="MyDataSource" type="DataSource">
> >> > JdbcDriver com.mysql.jdbc.Driver
> >> > JdbcUrl jdbc:mysql://localhost:3306/mydatabase?autoReconnect=true
> >> > UserName myuser
> >> > Password mypass
> >> > JtaManaged true
> >> > </Resource>
> >> >
> >> > <Resource id="MyUnmanagedDataSource" type="DataSource">
> >> > JdbcDriver com.mysql.jdbc.Driver
> >> > JdbcUrl jdbc:mysql://localhost:3306/mydatabase?autoReconnect=true
> >> > UserName myuser
> >> > Password mypass
> >> > JtaManaged false
> >> > </Resource>
> >> >
> >> >
> >> > my persistence.xml:
> >> >
> >> > <persistence version="2.0" xmlns="
> >> http://java.sun.com/xml/ns/persistence"
> >> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >> xsi:schemaLocation="
> >> > http://java.sun.com/xml/ns/persistence
> >> > http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
> >> > <persistence-unit name="testPU" transaction-type="JTA">
> >> >
> >> >
> >>
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >> > <jta-data-source>MyDataSource</jta-data-source>
> >> >
> <non-jta-data-source>MyUnmanagedDataSource</non-jta-data-source>
> >> > .
> >> > .
> >> > .
> >> > </persistence>
> >> >
> >> >
> >> > MyEJB.java
> >> >
> >> > @Stateless
> >> > public class MyEJB {
> >> >
> >> > @PersistenceContext(name="testPU")
> >> > private EntityManager em;
> >> >
> >> > public void test(){
> >> > .....
> >> > em.createQuery("SELECT o FROM Table o").getResultList();
> >> > ........
> >> > }
> >> > }
> >> >
> >> >
> >> > And all of this works without any trouble. :)
> >> >
> >> >
> >> > Now im trying to use DataSourceRealm with the same Datasource
> >> (tomee.xml)
> >> > but doesnt work
> >> >
> >> > context.xml
> >> >
> >> > <Realm
> >> > className="org.apache.catalina.realm.DataSourceRealm"
> >> > dataSourceName="MyDataSource"
> >> > userTable="userTable"
> >> > userNameCol="user"
> >> > userCredCol="pass"
> >> > userRoleTable="rolTable"
> >> > roleNameCol="rol"/>
> >> >
> >> > I expect the realm take the same DataSource from tomee.xml but this
> >> doesnt
> >> > happend:
> >> >
> >> > Severe: ........
> >> > The MyDataSource name is not associated to this context.
> >> >
> >> >
> >> > Is there a way to use the same datasource (tomee.xml)
> >> >
> >> > If i use JDBCRealm it works, but i want to reuse the same datasource
> >> > config.
> >> >
> >> >
> >> > Any?
> >> >
> >> >
> >> >
> >> > --
> >> > -------------------------------------------------------------------
> >> > SCJA. José Luis Cetina
> >> > -------------------------------------------------------------------
> >> >
> >> >
> >> > --
> >> > -------------------------------------------------------------------
> >> > *SCJA. José Luis Cetina*
> >> > -------------------------------------------------------------------
> >> >
> >>
> >
> >
>
--
-------------------------------------------------------------------
*SCJA. José Luis Cetina*
-------------------------------------------------------------------