es ist echt mal wieder zum Haareausraufen: ich hab laufend Probs mit der
Datasource und zwar wird sie einfach nicht gefunden, obwohl JBoss sie
kennen sollte:
Im jboss log steht folgendes:
2004-01-23 11:04:19,035 INFO [org.jboss.deployment.MainDeployer]
Starting deployment of package:
file:/D:/jboss/server/default/deploy/customersite-ds.xml
2004-01-23 11:04:19,445 INFO
[org.jboss.resource.connectionmanager.RARDeployment] Started
jboss.jca:service=ManagedConnectionFactory,name=CustomerSite
2004-01-23 11:04:19,465 INFO
[org.jboss.resource.connectionmanager.JBossManagedConnectionPool]
Started jboss.jca:service=ManagedConnectionPool,name=CustomerSite
2004-01-23 11:04:19,546 INFO [org.jboss.deployment.MainDeployer]
Deployed package: file:/D:/jboss/server/default/deploy/customersite-ds.xml
Und bei deployen meiner app kommt dann:
2004-01-23 11:04:46,954 INFO [org.jboss.ejb.EjbModule] Deploying
SequenceEntity
2004-01-23 11:04:47,465 INFO [org.jboss.ejb.EjbModule] Deploying User
2004-01-23 11:04:47,615 INFO [org.jboss.ejb.EjbModule] Deploying Country
2004-01-23 11:04:47,635 INFO [org.jboss.ejb.EjbModule] Deploying
SequenceService
2004-01-23 11:04:47,715 INFO [org.jboss.ejb.EjbModule] Deploying Manager
2004-01-23 11:04:48,887 ERROR [org.jboss.ejb.EntityContainer] Starting
failed
org.jboss.deployment.DeploymentException: Error in jbosscmp-jdbc.xml :
datasource-mapping CustomerSite not found
at
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData.<init>(JDBCEntityMetaData.java:433)
at
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCApplicationMetaData.<init>(JDBCApplicationMetaData.java:311)
at
org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCXmlFileLoader.load(JDBCXmlFileLoader.java:75)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadJDBCEntityMetaData(JDBCStoreManager.java:706)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.initStoreManager(JDBCStoreManager.java:409)
at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:357)
at
org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:152)
Ich frag mich wie das sein kann. Gestern ging das übrigens mal, nachdem
es etliche Male nicht funktionieren wollte. Seit dem hab ich aber nichts
am Code oder den Descriptors verändert.
Sven
Hast du evtl. auch für das Mapping in jbosscmp-jdbc.xml den JNDI-Namen
eingetragen und nicht die Datenbank-Bezeichnung (also z.B. 'Oracle8' etc.)?
-marek
Dort steht:
<defaults>
<datasource>java:/CustomerSite</datasource>
<datasource-mapping>CustomerSite</datasource-mapping>
<preferred-relation-mapping>relation-table</preferred-relation-mapping>
</defaults>
sollte also gehen
Sven
>>
>>
>> Hast du evtl. auch für das Mapping in jbosscmp-jdbc.xml den JNDI-Namen
>> eingetragen und nicht die Datenbank-Bezeichnung (also z.B. 'Oracle8'
>> etc.)?
>>
>> -marek
>>
>
> Dort steht:
>
> <defaults>
> <datasource>java:/CustomerSite</datasource>
> <datasource-mapping>CustomerSite</datasource-mapping>
Du hast aber auch ein eigenes DB-Mapping erstellt?
<type-mapping>
<name>CustomerSite</name>
....
Der Container versucht hier, ein Mapping namens "CustomerSite" zu
finden. Wenn du das nicht getan hast, musst du ein mitgeliefertes
Mapping nehmen (siehe standardjbosscmp-jdbc.xml).
-marek
Davon hör ich jetzt zum 1. Mal. Kannst du mir bitte was dazu erzählen ?
Sven
Ich glaube, du machst dir da ein Problem, wo keines ist: trage einfach
das korrekte Datenbankmapping für deine Datenbank da ein. Fertig. Wenn
du am eigentlichen Mapping was ändern willst, kannst du das immer noch
tun. Aber die default-Optionen sind meistens ok.
Beispiel für Oracle 8:
<datasource>java:/CustomerSite</datasource>
<datasource-mapping>Oracle8</datasource-mapping>
...
oder Mysql:
<datasource-mapping>mySQL</datasource-mapping>
Die Namen kannst du aus standardjbosscmp-jdbc.xml entnehmen.
-marek
Der JBoss muß doch die Java-Klassen/-Typen auf SQL-Typen mappen. Dazu dient
das. Wenn ich mich recht entsinne bringt der JBoss schon Mappings für die
gängigsten DBM-Systeme mit. Das für Dich passende mußt Du dort angeben oder
eben ein eigenes schreiben.
MfG,
Jens
--
Jens Kutschke
http://www.j-dimension.com
Das Problem ist ja, dass auf dem gleichen jboss noch weitere apps laufen
sollen, die aber andere Datasources nutzen. Die DataSources hingehen
sollten vorerst auf das gleichen Datenbanksystem zeigen, aber auf
verschiedene datenbanken
Ich kann dir nicht folgen. Was hat das mit dem Mapping zu tun? Du musst
dann einfach verschiedene DataSources konfigurieren und diese in den
Applikationen ansprechen. Das, was du da konfigurieren wolltest, ist für
das objektrelationale Mapping gedacht - also wie die Objekte in
Relationen umgesetzt werden.
-marek
ich spezifiziere in default/deploy/customersite-ds.xml und
suppliersite-ds.xml meine DataSourcen, die 1. soll eine andere
ConnectionURL specifizeren als die 2. Beiden verwenden aber ein
PostgreSQL-System.
Also müssen die beiden Datasources auf unter verschiedenen JNDI-Names zu
finden sein. Diese Namen tauchen ja dann in der entsprechenden
jboss-jdbc.xml wieder auf ?
Ich nehme mal an, dass ich komplett auf dem Holzweg bin und alles
mögliche durcheinander werfe.
Sven
Das hast du schon richtig verstanden. Für beide Datasources stellst du
in deiner jbosscmp-jdbc.xml dann das Mapping für PostgreSQL
("PostgreSQL") ein. Und gut ist.
-marek
Thx, nun gehts auch. Aber da taucht schon das nächste Problem auf:
15:12:30,761 INFO [Country] Table 'country' already exists
15:12:30,911 ERROR [EntityContainer] Starting failed
org.jboss.deployment.DeploymentException: Error while creating table
user; - nested throwable: (java.sql.SQLException: ERROR: parser: parse
error at or near "user" at character 14)
in der jbosscmp-jdbc.xml steht:
<entity>
<ejb-name>User</ejb-name>
<table-name>User</table-name>
<cmp-field>
<field-name>uuid</field-name>
<column-name>uuid</column-name>
</cmp-field>
.
.
.
</entity>
Sven
ist "user" vielleicht ein verbotenes Schlüsselwort als tablename?
nur so als idee....
Thorsten Langer
Das dachte ich auch, aber ich hatte kurz für das UserBean den
abstract-schema-name UserTab gesetzt, aber das hat auch nicht geholfen.
Dann hab ich mal alle Finder-Methoden rausgenommen, um die
ejb-ql-queries rauszukriegen, aber das hat auch nicht geholfen.
Ich weiss echt nicht mehr weiter. :-(
Sven
Viele Grüße
Sven Welte