Justin
I have a similar problem, and I agree that it is a backend connectivity
problem. In short, I've installed the portal server on win2k3 with LDAP
(active driectory). Everything was working fine with Cloudscape until I
converted it over to use an existing DB2 instance on a linux server.
After following the steps that IBM laid out for setting up DB2, I now
get the "failed to load target servlet" when I try to access it and the
logs show this bizzare message:
2b63c188 DataSourceCon E DSRA8040I: Failed to connect to the DataSource.
Encountered : java.lang.NoClassDefFoundError:
javax/sql/ConnectionPoolDataSource
As normal, there are two WAS application servers defined, server1 and
WebSphere_Portal. I know DB2 is working correctly because if I test the
datasource connectivity from server1's admin console, everything works
fine. If I do the same test from WebSphere_Portal's admin console, it
throws the above errors (NoClassDefFoundError on the ConnectionPool).
Does anyone have any suggestions as far as what to look at to diagnose
this issue? I've been trying to compare the settings of the two servers
with no success (all the classpaths look reasonably similar, for
example). I even tried putting j2ee.jar in the bootstrap classpath on
WebSphere_Portal to see if I could force it to work. It wouldn't even
start in that configuration. :-)
Any suggestions would be appreciated. Thanks.
Dave
Manually verify the classpath information on WebSphere Application
Server, and update it if necessary. Perform the following steps to add
required DB2 JDBC provider files to the WebSphere Application Server
classpath. If this installation of WebSphere Portal is federated into a
cell that is managed by the WebSphere Application Server deployment
manager, these steps should be performed on the Administrative Console
for the deployment manager.
1. Open the Administrative Console by accessing the following URL in
a browser:
http://hostname.yourco.com:9090/admin
where hostname.yourco.com:9090 is the host name and port of the machine
where WebSphere Application Server is running.
2. After logging in, click Servers > Application Servers, and then
click WebSphere_Portal from the list of application servers.
3. Click Process Definition from the list of additional properties,
and then click Java Virtual Machine from the list of additional properties.
4. In the Classpath field, enter the directory path where the
db2java.zip file is located. Note that this directory path must also
match the value you specified for the DbLibrary property in the
wpconfig.properties file. For example, C:/PROGRA~1/SQLLIB/java/db2java.zip.
5. Click OK.
6. Click the Save link to go to the Save page, and then click Save.
Cluster users: Because JVM settings are node-specific and not
synchronized across nodes, you must specify the classpath value for each
cluster member.
Maik
I did follow the step from the info center, and I've looked at that page
a half-million times in the past day or two. After looking again after
reading your reply, I noticed that db2java was listed in the boot
classpath, but not the plain classpath. So I tried putting it in there
too, but that didn't help. I get the same error. In fact, the db2java
is in the system classpath, so it really should be available regardless...
I turned on trace for com.ibm.ws.rsadapter.* (all-enabled), since that's
the last classes that have control (except for java.lang classes) before
it blows up. Here's some more trace:
[2/11/05 22:14:51:529 CST] c8f3177 EJBContainerI I WSVR0207I: Preparing
to start EJB jar: wmm.ejb.jar
[2/11/05 22:14:52:029 CST] c8f3177 WSManagedConn > <init>
[2/11/05 22:14:52:029 CST] c8f3177 WSManagedConn < <init>
com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl@5853715f
[2/11/05 22:14:52:123 CST] c8f3177 WSManagedConn >
setDataSourceProperties {loginTimeout=0, enableSQLJ=false, description=,
statementCacheSize=10, enableMultithreadedAccessDetection=false,
portNumber=,
dataSourceClass=COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource,
dataStoreHelperClass=com.ibm.websphere.rsadapter.DB2DataStoreHelper,
connectionAttribute=cursorhold=0, databaseName=wps50}
[2/11/05 22:14:52:123 CST] c8f3177 WSRdbDataSour > <init>
[2/11/05 22:14:52:201 CST] c8f3177 DSConfigurati > createDataStoreHelper
com.ibm.websphere.rsadapter.DB2DataStoreHelper {}
[2/11/05 22:14:52:216 CST] c8f3177 DSConfigurati < createDataStoreHelper
com.ibm.websphere.rsadapter.DB2DataStoreHelper@4175f15e
[2/11/05 22:14:52:232 CST] c8f3177 WSRdbDataSour d
Database type: null
DataSource class:
COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource
DataStoreHelper class:
com.ibm.websphere.rsadapter.DB2DataStoreHelper
InternalDataStoreHelper class:
com.ibm.ws.rsadapter.spi.InternalDB2DataStoreHelper@674db15e
SQLJ enabled? false
Multithreaded access detection enabled? false
[2/11/05 22:14:52:232 CST] c8f3177 WSRdbDataSour > createNewDataSource
COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource
[2/11/05 22:14:52:232 CST] c8f3177 DSConfigurati > createDataSource
COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource
[2/11/05 22:14:52:263 CST] c8f3177 ConnectionFac E J2CA0036E: An
exception occurred while invoking method setDataSourceProperties on
com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl used by resource
jdbc/wmmDS : java.lang.reflect.InvocationTargetException:
java.lang.NoClassDefFoundError: javax/sql/ConnectionPoolDataSource
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java(Inlined
Compiled Code))
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java(Compiled Code))
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at
com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:43)
at
com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:39)
at
com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:279)
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at
com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:279)
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at
com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:255)
at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
at
com.ibm.ws.rsadapter.DSConfigurationHelper$3.run(DSConfigurationHelper.java:941)
at java.security.AccessController.doPrivileged(Native Method)
at
com.ibm.ws.rsadapter.DSConfigurationHelper.loadClass(DSConfigurationHelper.java:934)
at
com.ibm.ws.rsadapter.DSConfigurationHelper.createDataSource(DSConfigurationHelper.java:533)
...
I'm going to turn the same trace on in server1 and try to test the
connection. Then I'll compare the differences and see if there are any.
Maybe there is some parameter that isn't being set or something.
Dave
and restart the server to try again.
If it can solve the problem, you need to double check your setting in the
WAS admin console.
"David Pankros" <dpan...@miragy.com> wrote in message
news:cujqbq$2rva$1...@news.boulder.ibm.com...
Makes me wish that the error didn't say
javax.sql.ConnectionPoolDataSource was not found. It would have been
much better if it said the corresponding DB2Class wasn't found. Oh
well. I guess I need to learn to speak IBM-ese...
Dave