WrapperDataSource problem
aamstutz Jun 7, 2003 8:51 AMHi,
While setting up 2 data sources in jboss 3.2.1 in run into some confusing
problems.
The 1. DS is set up for jaas and works WHITOUT any problems!
The 2. DS gives me serious headache.
See my conclusion on this further down this mail!
Before I switched to JBoss I did all the DS setup with Struts which worked
just fine.
Now I want to move business logic to SLSB's using the DAO-design-pattern.
JBoss-3.2.1
PostgreSQL 7.3.x
so I set up this DS:
$JBOSS_HOME/server/default/deploy/postgres-ds.xml
....
<local-tx-datasource>
<jndi-name>JCampDS</jndi-name>
<connection-url>jdbc:postgresql://192.168.1.40/javabootcamp</connection-url>
<driver-class>org.postgresql.jdbc3.Jdbc3PoolingDataSource</driver-class>
<user-name>myuser</user-name>
mypassword
<min-pool-size>2</min-pool-size>
<max-pool-size>50</max-pool-size>
<blocking-timeout-millis>5000</blocking-timeout-millis>
</local-tx-datasource>
Doing a grep on the log file tells me there is a WrapperDataSource to control
the DS:
[admins:~] andreas% grep "JCampDS" $JBOSS_HOME/server/default/log/server.log
... excerpt
11:39:05,139 INFO [TxConnectionManager] Starting
11:39:05,156 DEBUG [JCampDS] Binding object 'org.jboss.resource.adapter.jdbc.WrapperDataSource@fa129b'
into JNDI at 'java:/JCampDS'
11:39:05,157 INFO [JCampDS] Bound connection factory for resource adapter
for ConnectionManager 'jboss.jca:service=LocalTxCM,name=JCampDS to JNDI
name 'java:/JCampDS'
11:39:05,158 INFO [TxConnectionManager] Started
... the full grep outputs is at the end of this mail.
The DAO looks it up like this: ctx.lookup("java:comp/env/jdbc/JCampDS");
After deploying the app.ear in jboss I do some junit testing, whis gives
the following output:
11:46:34,101 INFO [STDOUT] *** In ScheduleEJB - null constructor
11:46:34,104 INFO [STDOUT] In ScheduleEJB - setSessionContext(ctx)
11:46:34,107 INFO [STDOUT] *** In ScheduleEJB - ejbCreate()
11:46:34,110 INFO [STDOUT] *** In ScheduleEJB -- searchByCourseTitle
11:46:34,126 INFO [STDOUT] ScheduleDAO jcampDataSource lookup OK!
11:46:34,132 INFO [STDOUT] --- ScheduleDAO - searchByCourseTitle
11:46:34,157 INFO [STDOUT] --- queryString = SELECT sid, courseid, locationid,
city, state, country, startdate, enddate, status, title, instructorID,
price, maxenrollment, currentenrollment FROM ScheduleEJBTable s, CourseEJBTable
c, LocationEJBTable l where courseid = c.id AND locationid = l.id AND
title LIKE ?
At this point an Exception is thrown, which tells me that the sql query
I defined has been MODIFIED to be loking for table names in UPPERCASE.
That is pretty CONFUSING to me.
... excerpt
[junit] Testcase: testJDBCConnection took 0.542 sec
[junit] Testcase: testSearchByCourseTitle took 2.047 sec
[junit] Caused an ERROR
[junit] SearchByCourseTitle exception = Query exception Table not found:
SCHEDULEEJBTABLE in statement [SELECT sid, courseid, locationid, city, state,
country, startdate, enddate, status, title, instructorID, price, maxenrollment,
currentenrollment FROM ScheduleEJBTable s, CourseEJBTable c, LocationEJBTable
l where courseid = c.id AND locationid = l.id AND title LIKE '%Java%']
Executing this query directly on the db works and results in:
javabootcamp=> SELECT sid, courseid, locationid, city, state, country, startdate,
enddate, status, title, instructorID, price, maxenrollment, currentenrollment
FROM ScheduleEJBTable s, CourseEJBTable c, LocationEJBTable l where courseid
= c.id AND locationid = l.id AND title LIKE '%Java%';
sid | courseid | locationid | city | state | country |
startdate | enddate | status | title
| instructorid | price | maxenrollment | currentenrollment
------------+----------+------------+---------------+-------+---------+------------+------------+-----------+-------------------------------------------+--------------+---------+---------------+-------------------
2001081501 | JAVA-100 | CA-SF-001 | Mountain View | CA | USA |
2002-08-13 | 2002-08-17 | OPEN | Introduction to Java Programming
| Joe Davis | 2000.00 | 14 | 2
2001092403 | JAVA-300 | CA-SF-200 | Milpitas | CA | USA |
2002-09-24 | 2002-09-28 | OPEN | Advanced Java Programming
| Joe Davis | 2500.00 | 14 | 0
2001092402 | EJB-200 | CA-SF-200 | Milpitas | CA | USA |
2002-03-24 | 2002-03-28 | FULL | Introduction to Enterprise JavaBeans(EJB)
| Joe Davis | 2500.00 | 14 | 0
2001092401 | EJB-300 | CA-SF-200 | Milpitas | CA | USA |
2002-05-24 | 2002-05-28 | CANCELLED | Advanced Enterprise JavaBeans(EJB)
| Joe Davis | 2500.00 | 14 | 0
2001092400 | JAVA-300 | CA-SF-200 | Milpitas | CA | USA |
2002-09-24 | 2002-09-28 | CANCELLED | Advanced Java Programming
| Joe Davis | 2500.00 | 14 | 0
2001082009 | WEB-200 | CA-LA-200 | Hollywood | CA | USA |
2002-08-20 | 2002-08-24 | OPEN | Introduction to Java Server Pages
| Sue Smith | 1400.00 | 14 | 0
2001082004 | WEB-200 | CA-LA-200 | Hollywood | CA | USA |
2002-08-20 | 2002-08-24 | OPEN | Introduction to Java Server Pages
| Sue Smith | 1400.00 | 14 | 0
(7 rows)
################################################################
Accessing the DB via a DS from outside Jboss works just fine.
################################################################
... excerpt from junit test suite
public void testPooledDataSource() throws Exception {
assertNotNull("Expected a Datasource beeing returned.", getDataSource("A
Data Source"));
javax.sql.DataSource ds = getDataSource("MyDS");
Connection conn = ds.getConnection();
String queryString = "SELECT sid, courseid, locationid, city, state, country,
startdate, enddate, status, title, instructorID, price, maxenrollment,
currentenrollment " +
"FROM ScheduleEJBTable s, CourseEJBTable c, LocationEJBTable l where
courseid = c.id AND locationid = l.id AND title LIKE ?";
PreparedStatement prepStmt = conn.prepareStatement(queryString);
prepStmt.setString( 1, "%Java%" );
ResultSet rset = prepStmt.executeQuery();
while(rset.next()) {
ScheduleVO schedule = new ScheduleVO(
rset.getString("sid"), rset.getString("courseid"), rset.getString("locationid"),
rset.getString("city"), rset.getString("state"), rset.getString("country"),
rset.getDate("startdate"), rset.getDate("enddate"),
rset.getString("status"),rset.getString("title"),
rset.getFloat("price"), rset.getInt("maxenrollment"), rset.getInt("currentenrollment")
);
System.out.println(" --- ScheduleDAO - created schedule item, before
adding to a vector");
}
rset.close();
prepStmt.close();
conn.close();
}
public javax.sql.DataSource getDataSource(String name) throws Exception
{
Jdbc3PoolingDataSource source = new org.postgresql.jdbc3.Jdbc3PoolingDataSource();
source.setDataSourceName(name);
source.setServerName("192.168.1.40");
source.setDatabaseName("javabootcamp");
source.setUser("postgres");
source.setPassword("");
source.setMaxConnections(10);
return source;
}
########### conclusion ###################################
So I think there must be something wrong on the jboss side.
Or is there some DS configuration thing which I've overlooked?
Please help me with that one.
########################################################
[admins:~] andreas% grep "JCampDS" $JBOSS_HOME/server/default/log/server.log
<mbean code="org.jboss.resource.connectionmanager.TxConnectionManager"
display-name="ConnectionManager for DataSource JCampDS" name="jboss.jca:service=LocalTxCM,name=JCampDS">true
<depends optional-attribute-name="ManagedConnectionPool"><mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool"
display-name="Connection Pool for DataSource JCampDS" name="jboss.jca:service=ManagedConnectionPool,name=JCampDS"><depends
optional-attribute-name="ManagedConnectionFactoryName"><mbean code="org.jboss.resource.connectionmanager.RARDeployment"
display-name="ManagedConnectionFactory for DataSource JCampDS" name="jboss.jca:service=ManagedConnectionFactory,name=JCampDS"><depends
optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=JBoss
LocalTransaction JDBC Wrapper
JCampDS
2003-06-07 11:38:57,540 DEBUG [org.jboss.system.ServiceCreator] About to
create bean: jboss.jca:service=LocalTxCM,name=JCampDS with code: org.jboss.resource.connectionmanager.TxConnectionManager
2003-06-07 11:38:57,577 DEBUG [org.jboss.system.ServiceCreator] Created
bean: jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:57,581 DEBUG [org.jboss.system.ServiceConfigurator] TrackConnectionByTx
set to true in jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:57,583 DEBUG [org.jboss.system.ServiceConfigurator] LocalTransactions
set to true in jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:57,585 DEBUG [org.jboss.system.ServiceCreator] About to
create bean: jboss.jca:service=ManagedConnectionPool,name=JCampDS with code:
org.jboss.resource.connectionmanager.JBossManagedConnectionPool
2003-06-07 11:38:57,590 DEBUG [org.jboss.system.ServiceCreator] Created
bean: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,845 DEBUG [org.jboss.system.ServiceCreator] About to
create bean: jboss.jca:service=ManagedConnectionFactory,name=JCampDS with
code: org.jboss.resource.connectionmanager.RARDeployment
2003-06-07 11:38:57,850 DEBUG [org.jboss.system.ServiceCreator] Created
bean: jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:57,851 DEBUG [org.jboss.system.ServiceController] recording
that jboss.jca:service=ManagedConnectionFactory,name=JCampDS depends on
jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper
2003-06-07 11:38:57,856 DEBUG [org.jboss.system.ServiceConfigurator] ManagedConnectionFactoryProperties
set to [properties: null] in jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:57,857 DEBUG [org.jboss.system.ServiceController] recording
that jboss.jca:service=ManagedConnectionPool,name=JCampDS depends on jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:57,858 DEBUG [org.jboss.system.ServiceConfigurator] considering
ManagedConnectionFactoryName with object name jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:57,859 DEBUG [org.jboss.system.ServiceConfigurator] MinSize
set to 2 in jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,862 DEBUG [org.jboss.system.ServiceConfigurator] MaxSize
set to 50 in jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,863 DEBUG [org.jboss.system.ServiceConfigurator] BlockingTimeoutMillis
set to 5000 in jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,864 DEBUG [org.jboss.system.ServiceConfigurator] IdleTimeoutMinutes
set to 15 in jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,868 DEBUG [org.jboss.system.ServiceConfigurator] Criteria
set to ByNothing in jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,869 DEBUG [org.jboss.system.ServiceController] recording
that jboss.jca:service=LocalTxCM,name=JCampDS depends on jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,870 DEBUG [org.jboss.system.ServiceConfigurator] considering
ManagedConnectionPool with object name jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,878 DEBUG [org.jboss.system.ServiceConfigurator] JndiName
set to JCampDS in jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:57,880 DEBUG [org.jboss.system.ServiceController] recording
that jboss.jca:service=LocalTxCM,name=JCampDS depends on jboss.jca:service=CachedConnectionManager
2003-06-07 11:38:57,881 DEBUG [org.jboss.system.ServiceController] recording
that jboss.jca:service=LocalTxCM,name=JCampDS depends on jboss:service=TransactionManager
2003-06-07 11:38:57,910 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:57,911 DEBUG [org.jboss.system.ServiceController] waiting
in create of jboss.jca:service=LocalTxCM,name=JCampDS waiting on jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,911 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:57,912 DEBUG [org.jboss.system.ServiceController] waiting
in create of jboss.jca:service=ManagedConnectionPool,name=JCampDS waiting
on jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:57,912 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:58,015 DEBUG [org.jboss.management.j2ee.LocalJBossServerDomain]
handleNotification: javax.management.Notification[source=jboss.system:service=ServiceController,type=
org.jboss.system.ServiceMBean.create,sequenceNumber=33,timeStamp=1054978738014,message=null,userData=jboss.jca:service=ManagedConnectionFactory,name=JCampDS]
2003-06-07 11:38:58,015 DEBUG [org.jboss.management.j2ee.factory.DefaultManagedObjectFactoryMap]
Failed to find factory for event: javax.management.Notification[source=jboss.system:service=ServiceController,type=
org.jboss.system.ServiceMBean.create,sequenceNumber=33,timeStamp=1054978738014,message=null,userData=jboss.jca:service=ManagedConnectionFactory,name=JCampDS]
2003-06-07 11:38:58,016 DEBUG [org.jboss.system.ServiceController] Creating
dependent components for: jboss.jca:service=ManagedConnectionFactory,name=JCampDS
dependents are: [ObjectName: jboss.jca:service=ManagedConnectionPool,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionFactory,name=JCampDS
Depends On Me: jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:58,017 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:58,234 DEBUG [org.jboss.management.j2ee.LocalJBossServerDomain]
handleNotification: javax.management.Notification[source=jboss.system:service=ServiceController,type=
org.jboss.system.ServiceMBean.create,sequenceNumber=34,timeStamp=1054978738234,message=null,userData=jboss.jca:service=ManagedConnectionPool,name=JCampDS]
2003-06-07 11:38:58,235 DEBUG [org.jboss.management.j2ee.factory.DefaultManagedObjectFactoryMap]
Failed to find factory for event: javax.management.Notification[source=jboss.system:service=ServiceController,type=
org.jboss.system.ServiceMBean.create,sequenceNumber=34,timeStamp=1054978738234,message=null,userData=jboss.jca:service=ManagedConnectionPool,name=JCampDS]
2003-06-07 11:38:58,235 DEBUG [org.jboss.system.ServiceController] Creating
dependent components for: jboss.jca:service=ManagedConnectionPool,name=JCampDS
dependents are: [ObjectName: jboss.jca:service=LocalTxCM,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:58,241 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:58,242 DEBUG [org.jboss.system.ServiceController] waiting
in create of jboss.jca:service=LocalTxCM,name=JCampDS waiting on jboss.jca:service=CachedConnectionManager
jboss.jca:service=LocalTxCM,name=JCampDS state: Stopped
jboss.jca:service=ManagedConnectionPool,name=JCampDS state: Created
jboss.jca:service=ManagedConnectionFactory,name=JCampDS state: Created
2003-06-07 11:38:58,355 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:58,395 DEBUG [org.jboss.system.ServiceController] waiting
in start jboss.jca:service=LocalTxCM,name=JCampDS on jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:58,545 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:58,549 DEBUG [org.jboss.system.ServiceController] waiting
in start jboss.jca:service=ManagedConnectionPool,name=JCampDS on jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:58,549 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=ManagedConnectionFactory,name=JCampDS
2003-06-07 11:38:58,574 DEBUG [org.jboss.system.ServiceController] Starting
dependent components for: jboss.jca:service=ManagedConnectionFactory,name=JCampDS
dependent components: [ObjectName: jboss.jca:service=ManagedConnectionPool,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionFactory,name=JCampDS
Depends On Me: jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:58,578 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:58,580 DEBUG [org.jboss.system.ServiceController] Starting
dependent components for: jboss.jca:service=ManagedConnectionPool,name=JCampDS
dependent components: [ObjectName: jboss.jca:service=LocalTxCM,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:38:58,581 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:38:58,581 DEBUG [org.jboss.system.ServiceController] waiting
in start jboss.jca:service=LocalTxCM,name=JCampDS on jboss.jca:service=CachedConnectionManager
jboss.jca:service=LocalTxCM,name=JCampDS state: Stopped
jboss.jca:service=ManagedConnectionPool,name=JCampDS state: Started
jboss.jca:service=ManagedConnectionFactory,name=JCampDS state: Started
2003-06-07 11:38:58,608 DEBUG [org.jboss.management.j2ee.JCAResource] Created
JSR-77 JCAResource: JCampDS
2003-06-07 11:38:58,611 DEBUG [org.jboss.management.j2ee.JCAConnectionFactory]
postRegister(), parent: jboss.management.local:J2EEServer=JBoss LocalTransaction
JDBC Wrapper,j2eeType=JCAResource,name=JCampDS
2003-06-07 11:38:58,612 DEBUG [org.jboss.management.j2ee.JCAConnectionFactory]
Created JSR-77 JCAConnectionFactory: JCampDS
2003-06-07 11:38:58,614 DEBUG [org.jboss.management.j2ee.JCAManagedConnectionFactory]
postRegister(), parent: jboss.management.local:J2EEServer=JBoss LocalTransaction
JDBC Wrapper,JCAResource=JCampDS,j2eeType=JCAConnectionFactory,name=JCampDS
jboss.jca:service=LocalTxCM,name=JCampDS
Depends On Me: , ObjectName: jboss.jca:service=LocalTxCM,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:39:03,293 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:39:03,295 DEBUG [org.jboss.system.ServiceController] waiting
in create of jboss.jca:service=LocalTxCM,name=JCampDS waiting on jboss.jca:service=CachedConnectionManager
Depends On Me: , ObjectName: jboss.jca:service=LocalTxCM,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:39:03,382 DEBUG [org.jboss.system.ServiceController] Creating
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:39:03,388 DEBUG [org.jboss.management.j2ee.LocalJBossServerDomain]
handleNotification: javax.management.Notification[source=jboss.system:service=ServiceController,type=
org.jboss.system.ServiceMBean.create,sequenceNumber=51,timeStamp=1054978743388,message=null,userData=jboss.jca:service=LocalTxCM,name=JCampDS]
2003-06-07 11:39:03,390 DEBUG [org.jboss.management.j2ee.factory.DefaultManagedObjectFactoryMap]
Failed to find factory for event: javax.management.Notification[source=jboss.system:service=ServiceController,type=
org.jboss.system.ServiceMBean.create,sequenceNumber=51,timeStamp=1054978743388,message=null,userData=jboss.jca:service=LocalTxCM,name=JCampDS]
2003-06-07 11:39:03,392 DEBUG [org.jboss.system.ServiceController] Creating
dependent components for: jboss.jca:service=LocalTxCM,name=JCampDS dependents
are: []
jboss.jca:service=LocalTxCM,name=JCampDS
Depends On Me: , ObjectName: jboss.jca:service=LocalTxCM,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:39:03,962 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:39:03,964 DEBUG [org.jboss.system.ServiceController] waiting
in start jboss.jca:service=LocalTxCM,name=JCampDS on jboss.jca:service=CachedConnectionManager
Depends On Me: , ObjectName: jboss.jca:service=LocalTxCM,name=JCampDS
I Depend On: jboss.jca:service=ManagedConnectionPool,name=JCampDS
2003-06-07 11:39:05,138 DEBUG [org.jboss.system.ServiceController] starting
service jboss.jca:service=LocalTxCM,name=JCampDS
2003-06-07 11:39:05,156 DEBUG [org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.JCampDS]
Binding object 'org.jboss.resource.adapter.jdbc.WrapperDataSource@fa129b'
into JNDI at 'java:/JCampDS'
2003-06-07 11:39:05,157 INFO [org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.JCampDS]
Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=LocalTxCM,name=JCampDS
to JNDI name 'java:/JCampDS'
2003-06-07 11:39:05,173 DEBUG [org.jboss.system.ServiceController] Starting
dependent components for: jboss.jca:service=LocalTxCM,name=JCampDS dependent
components: []
2003-06-07 11:39:38,801 DEBUG [org.jboss.ejb.StatelessSessionContainer]
Binding resource manager: java:/DefaultDS to JDNI ENC as: jdbc/JCampDS
[admins:~] andreas%