# Cloudscape/Derby NetworkServer als JDBCRealm Datenbank



## buthus (15. Sep 2005)

Hallo zusammen, 

ich habe folgendes Problem: Ich möchte einen Cloudscape/Derby *Network Server* als *JDBCRealm Datenbank* verwenden. Als Applikationsserver verwende ich Tomcat 5.5. Wenn ich alle nowendigen Änderungen in der conf/server.xml gemacht habe bekomme ich beim Start von Tomcat folgende Fehlermeldung:

com.ibm.db2.jcc.c.SqlException: null userid not supported
        at com.ibm.db2.jcc.a.b.C(b.java:1736)
        at com.ibm.db2.jcc.a.b.a(b.java:1742)
        at com.ibm.db2.jcc.a.b.a(b.java:701)
        at com.ibm.db2.jcc.a.b.<init>(b.java:305)
        at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:162)
        at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:694)
        at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:758)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1004)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
        at org.apache.catalina.core.StandardService.start(StandardService.java:450)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:271)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)

Nun die Frage: Ist es überhaupt möglich, einen Derby Network Server als JDBCRealm Datenbank zu verwenden? Wenn ja - was ist mein Fehler ..? 

Folgende Segment wurde in die conf/server.xml eingefügt:

<Realm
	  className="org.apache.catalina.realm.JDBCRealm"
	  debug="99"
	  driverName="com.ibm.db2.jcc.DB2Driver"              
          connectionURL="jdbc:derby:net://<ip>:19645/jdbcRealmDb;
                                  bootPassword=bootPassword;user=admin;password=password"
	  userTable="jdbcrealmuser"
	  userNameCol="userid"
	  userCredCol="password"
	  userRoleTable="user_role"
	  roleNameCol="rolename"
/>

Die ConnectionUrl wurde hier leider umgebrochen, steht aber in einer Zeile. Versuche ich das gleiche mit einer embedded Datenbank (<Realm> Tag sieht dann natürlich etwas anders aus), funktioniert es.

Der Network Server ist beim Start des Tomcat bereits gestartet und wartet auf eingehende Connections.


----------



## KSG9|sebastian (15. Sep 2005)

du musst auf jeden fall noch nen user und n password übergeben
also nen user der datenbank

Edit:

Das Attribut heist nich "user" bzw. "password" sondern "connectionName" und "connectionPassword"
Guckst du hier: http://jakarta.apache.org/tomcat/tomcat-5.0-doc/realm-howto.html#JDBCRealm
Was soll das Attribut bootPassword ?

<Realm 
className="org.apache.catalina.realm.JDBCRealm" 
debug="99" 
driverName="com.ibm.db2.jcc.DB2Driver" 
connectionName="root"
connectionPassword="test"
connectionURL="jdbc:derby:net://<ip>:19645/jdbcRealmDb; 
userTable="jdbcrealmuser" 
userNameCol="userid" 
userCredCol="password" 
userRoleTable="user_role" 
roleNameCol="rolename" 
/>

Edit2:

com.ibm.db2.jcc.c.SqlException: null userid not supported 


sagt doch schon, dass ne userId fehlt..


----------



## butus (15. Sep 2005)

Danke dir! Kaum macht man's richtig - funktionierts ... 

_user _und _password _standen bei mir im JDBC Connection String für eine Cloudscape Datenbank. Cloudscape mag das so - und mit dem Attribut bootPassword übergibt man das Passwort, mit dem die Datenbank auf dem Dateisystem verschlüsselt abgelegt ist.

Also für alle die mal das gleiche Problem haben sollten ... so siehts richtig aus:

```
<Realm
	  className="org.apache.catalina.realm.JDBCRealm"
	  debug="99"
	  driverName="com.ibm.db2.jcc.DB2Driver"
     connectionName="admin"
	  connectionPassword="password"
	  connectionURL="jdbc:derby:net://<ip>:19645/jdbcRealmDb;bootPassword=bootPassword"
	  userTable="jdbcrealmuser"
	  userNameCol="userid"
	  userCredCol="password"
	  userRoleTable="user_role"
	  roleNameCol="rolename"
	/>
```


----------

