Erreur de déploiement sous JBoss

Erreur de déploiement sous JBoss - Java - Programmation

Marsh Posté le 10-01-2006 à 16:45:29    


Bonjour tout le monde
 
Voila, depuis 2 jours et quelques, je cherche vainement à déployer un EAR sous JBoss.
Je dis vainement car j'obtiens au démarrage la même erreur :
 

Code :
  1. org.jboss.deployment.DeploymentException: type-mapping is not initialized: java:/MaBase was not deployed or type-mapping was not
  2. configured.
  3.         at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData.getTypeMapping(JDBCEntityMetaData.java:1088)
  4.         at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.initStoreManager(JDBCStoreManager.java:412)
  5.         at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:353)
  6.         at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:157)
  7.         at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:340)


 
Or, dans le dossier META-INF de mon fichier JAR contennant mes EJB's  
j'y ai mis les fichiers suivants définissant la base utilisée :
 
jbosscmp-jdbc.xml :
 

Code :
  1. <jbosscmp-jdbc>
  2.    <defaults>
  3.      <datasource>java:/MaBase</datasource>
  4.      <create-table>False</create-table>
  5.    </defaults>
  6.    ...
  7.      <:jbosscmp-jdbc>


 
jaws.xml
 

Code :
  1. <jaws>
  2.    <datasource>java:/MaBase</datasource>
  3.    <type-mapping>Oracle8</type-mapping>
  4. </jaws>


 
De plus, dans server/default/conf, j'ai installé le fichier oracle-xa-ds.xml qui contient
les lignes suivantes (certaines valeurs comme l'adresse IP , ..etc ne sont pas indiqués):

Code :
  1. <xa-datasource>
  2.     <jndi-name>MaBase</jndi-name>
  3.     <track-connection-by-tx/>
  4.     <isSameRM-override-value>false</isSameRM-override-value>
  5.     <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
  6.     <xa-datasource-property name="URL">jdbc:oracle:thin:@adressIP:port:nomDuSchéma</xa-datasource-property>
  7.     <xa-datasource-property name="User">USER</xa-datasource-property>
  8.     <xa-datasource-property name="Password">PASSWD</xa-datasource-property>
  9.    
  10.     <!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
  11.      
  12. <!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name-->
  13.     <!-- Checks the Oracle error codes and messages for fatal errors -->
  14.     <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
  15.     <!-- Oracles XA datasource cannot reuse a connection outside a transaction once enlisted in a global transaction and vice-versa -->
  16.     <no-tx-separate-pools/>
  17.       <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
  18.       <metadata>
  19.          <type-mapping>Oracle8</type-mapping>
  20.       </metadata>
  21.      
  22.   </xa-datasource>
  23.  
  24.   <!-- ///// Used MBeans for XA connections ///// -->
  25.   <mbean code="org.jboss.resource.adapter.jdbc.vendor.OracleXAExceptionFormatter"
  26.          name="jboss.jca:service=OracleXAExceptionFormatter">
  27.     <depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
  28.   </mbean>


 
Et donc, malgré tout cela, le vilain serveur JBoss s'obstine à ne pas me déployer mes fichiers EAR.  :cry:  
 
Au secours  !!
 
Comme d'habitude, je remercie d'avance ceux qui pourront m'aider  :jap:  
 
PS : Je suis un gros débutant sous JBOSS  :pfff: mais fallait il le préciser ??

Reply

Marsh Posté le 10-01-2006 à 16:45:29   

Reply

Marsh Posté le 11-01-2006 à 02:19:25    

me rappelle plus du nom du fichier ou ça se trouve, mais il te dit qu'il connait pas le type mapping Oracle8. tous les types mappings sont déclarés dans un fichier du repertoire conf de jboss.. jpeux te le trouver demain ..


Message édité par the real moins moins le 11-01-2006 à 02:19:51

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 11-01-2006 à 12:46:46    

Je crois que je l'ai : standardjbosscmp-jdbc.xml dans le répertoire conf.


---------------
Soyons ouverts d'esprit, mais pas au point de laisser notre cerveau s'enfuir.
Reply

Marsh Posté le 11-01-2006 à 13:11:00    

effectivement


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 19-01-2006 à 18:52:02    

Bonjour tout le monde
 
Pour ceux qui ont eu le même problème que moi, voici la solution que j'ai trouvée.
En effet, comme le disait le message d'erreur, il manquait le mapping dans le fichier jbosscmp-jdbc.xml
qui se trouve dans le dossier META-INF du fichier EAR.
Et donc, il a suffi de modifier le tache Ant comme ci-dessous, correspondant à la compilation des fichiers Jboss.
 

Code :
  1. <jboss destdir="META-INF"
  2.                version="4.0"
  3.                datasource="java:/<nom_base_de_donnees>"
  4.          datasourceMapping="Oracle8"
  5.                validatexml="true"
  6.                createTable="false" />

 
 
Et là miracle, mes EJB se sont déployés.
 
Par contre , lors des tests de fonctionnement, j'ai obtenu l'erreur suivante
 

Code :
  1. 2006-01-19 18:06:41,355 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Service] Executing SQL: SELECT <champ1>,<champ2>,  FROM <Table>
  2. WHERE (<champID>=?)
  3. 2006-01-19 18:06:41,363 ERROR [org.jboss.ejb.plugins.LogInterceptor] TransactionRolledbackLocalException in method: public abstract java.lang.Integer fr.vizzavi.gc.ejb.entity.ServiceLocal.getId(), causedBy:
  4. java.sql.SQLException: ORA-00936: missing expression
  5.         at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
  6.         at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
  7.         at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
  8.         at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
  9.         at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:830)
  10.         at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2391)
  11.         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
  12.         at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
  13.         at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
  14.         at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:211)
  15.         at org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:163)
  16.         ... etc


 
Et donc, j'en déduis que, lors du chargement du dit EJB, il execute la requête ci-dessus, qui est evidemment fausse à cause d'une virgule  :heink:  
ou, peut-être d'un champs manquant. Donc, si quelqu'un a déjà rencontré le problème.  :jap:  
 
De plus, je remercie Mario_ et the real moins moins et je m'excuse du temps que j'ai mis pour partager la solution que  
j'ai trouvée.
De plus, je voudrais savoir s'il existe un topic sur JBOSS ?
 
 

Reply

Marsh Posté le 17-02-2006 à 17:15:36    


Bonjour tout le monde
 
Le problème ci-dessus était du à des "tags" XDoclet foireux.  
Pour être précis , j'utilisait "fk_column" au lieu de "fk-column" ce qui, à mon avis,
gênait mon pauvre JBOSS.
 
Donc, je conseille à ceux qui ont ce problème  
de fausse requête SQL générée par JBOSS, de vérifier tous les tags XDoclet du Bean incréminée
 
Après cette étape, j'obtiens un autre problème beaucoup plus technique:
En effet, mon projet se décompose en 2 fichier EAR.
Or l'un de ces gentils EAR ne fonctionne qu'avec une version 1.1.3 de Log4J ce qui le rend
incompatible avec JBoss qui, charge lors de son démarrage une version beaucoup plus récente.
(Ce qui a pour résultat de m'envoyer des ClassCastException à la figure)  
 
Après quelques recherches sur Google, je vois qu'il possible de jouer avec les "ClassLoader" ce
qui permettrait de charger mon Log4J v1.1.3 que pour le fichier EAR incriminé (en modifiant le fichier  
"jboss-app.xml" de l'EAR).
Je teste, je constate via la console JMX que j'ai bien un loader avec la bonne version du log4j (attaché
au package "org.apache.log4j" ). Mais, par contre, mon Log4j ne trouve le fichier de config "log4j.properties" qui
est indiqué dans le classpath de l'appli.  :cry:  
 
Que faire  :??:  :??:  
 
Donc, si quelqu'un a déjà rencontré le problème, son prix sera le mien .
De toute façon, si je trouve la solution , je le posterai afin que cela puisse profiter à
tout le monde.
 
 
 
 

Reply

Marsh Posté le 17-02-2006 à 18:23:15    


Voici à titre d'information, le fichier jboss-app.xml que j'ai inséré
dans le META-INF de mon EAR
 

Code :
  1. <jboss-app>
  2.    <loader-repository>
  3.       <nomFichierEAR>.ear:loader=billing-portal
  4.       <loader-repository-config>
  5.        java2ParentDelegation=true
  6.       </loader-repository-config>
  7.    </loader-repository>
  8.  
  9. </jboss-app>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed