2009-12-16 3 views
1

J'ai apache tomcat 5.5.28 sur mon windows box et j'essaye de déployer une application web (WAR) qui fonctionne bien sur d'autres serveurs.tomcat oracle datasource

Cependant, je ne parviens pas à créer une source de données. Je ne suis pas sûr du format. Le db est oracle.

Voici ce que j'ai dans server.xml.

<GlobalNamingResources> 
    <Environment 
     name="simpleValue" 
     type="java.lang.Integer" 
     value="30"/> 
    <Resource 
     name="tomdb11" 
     type="oracle.jdbc.pool.OracleDataSource" 
     maxActive="4" 
     maxIdle="2" 
     username="tomdb11" 
     maxWait="5000" 
     driverClassName="oracle.jdbc.driver.OracleDriver" 
     validationQuery="select * from dual" 
     password="remotedb11" 
     url="jdbc:oracle:thin:@dbserver:1521:orcl"/> 
    <Resource 
     auth="Container" 
     description="User database that can be updated and saved" 
     name="UserDatabase" 
     type="org.apache.catalina.UserDatabase" 
     factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
     pathname="conf/tomcat-users.xml"/> 
    </GlobalNamingResources> 

Comment puis-je accéder à ce dans le web.xml où habituellement ce que j'ai qui travaille dans d'autres serveurs est

<context-param> 
    <param-name>databaseUser</param-name> 
    <param-value>tomdb11</param-value> 
</context-param> 

<context-param> 
    <param-name>databasePassword</param-name> 
    <param-value>tomdb11</param-value> 
</context-param> 

<context-param> 
    <param-name>databaseSchema</param-name> 
    <param-value>TOMDBADMINN11</param-value> 
</context-param> 

Je suis aussi je manque quelque chose?

Modifier: Je reçois l'exception suivante:

javax.naming.NameNotFoundException: Name tomdb11 is not bound in this Context 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:770) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:153) 
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137) 
    at javax.naming.InitialContext.lookup(Unknown Source) 
    at com.taw.database.DatabaseService.<init>(DatabaseService.java:19) 
    at com.taw.database.DatabaseServices.init(DatabaseServices.java:40) 
+0

Quels sont ces autres serveurs que vous mentionnez? Sont-ils aussi Tomcat ou utilisez-vous un autre conteneur? –

+0

Que disent les journaux des serveurs d'applications? S'il vous plaît modifier votre question et poster des erreurs/exceptions. – BalusC

+0

javax.naming.NameNotFoundException: Nom jdbc n'est pas lié dans ce contexte \t at org.apache.naming.NamingContext.lookup (NamingContext.java:770) at org.apache.naming.NamingContext.lookup (NamingContext.java:153)) à org.apache.naming.SelectorContext.lookup (SelectorContext.java:137) à javax.naming.InitialContext.lookup (source inconnue) à com.taw.database.DatabaseService. (DatabaseService.java:19) à com.taw.database.DatabaseServices.init (DatabaseServices.java:40) à com.taw.web.BaseProxyDispatcher.initializeDatabaseServices (BaseProxyDispatcher.java:225) à c – user229432

Répondre

2

d'abord ... Assurez-vous que vous avez un pot JDBC Oracle dans votre $ TOMCAT_HOME/common/lib.

deuxième ... Assurez-vous que votre web.xml contient également un bloc comme celui-ci ...

<resource-ref> 
    <description>Oracle Datasource</description> 
    <res-ref-name>tomdb11</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
</resource-ref> 

Quant à votre <context-param>, je ne sais pas qui fait quoi que ce soit que vous avez déjà ces choses défini dans votre <Resource>.

+0

en train de le faire maintenant – user229432

+0

Je mets le fichier jce bc jcb dans le répertoire common.lib et également inclus cette ressource -ref cependant, je ne vois aucune exception juste que l'exception spécifique de l'application montre qu'il ne peut pas se connecter à la base de données. Mon fichier server.xml est-il correct? – user229432

+0

ai-je besoin de poursuivre la source de données dans le format jdbc/tomdb11 au lieu de seulement tomdb11 – user229432

3

Si exception indique qu'il ne peut pas trouver jdbc dans le contexte JNDI, cela signifie à peu près que vous avez essayé d'obtenir le DataSource comme suit

dataSource = new InitialContext().lookup("jdbc/tomdb11"); 

pendant que votre fichier server.xml dit ce qui suit:

<Resource 
    name="tomdb11" 
    > 

Ces noms sont pas même. En fait, vous auriez dû être utilisé:

dataSource = new InitialContext().lookup("tomdb11"); 

Dans Tomcat, cependant, le InitialContext n'a pas pointer directement vers java:comp/env/, vous aurez donc besoin de le remplacer par:

dataSource = new InitialContext().lookup("java:comp/env/tomdb11"); 

La normale Toutefois, la pratique consiste à spécifier les sources de données JDBC avec le préfixe jdbc. Donc, je renommer la ressource comme

<Resource 
    name="jdbc/tomdb11" 
    > 

et l'accès par

dataSource = new InitialContext().lookup("java:comp/env/jdbc/tomdb11"); 

Dans web.xml de la webapp, vous devriez cependant aussi la déclaration de ressource suivante:

<resource-env-ref> 
    <resource-env-ref-name>jdbc/tomdb11</resource-env-ref-name> 
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> 
</resource-env-ref> 

Pour plus de détails sur Tomcat JNDI vérifier ce HOWTO: http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html. J'espère que cela t'aides.

+0

après que je l'ai fait ce changement je reçois javax.naming.NamingException: Impossible de créer une instance de ressources \t à org.apache.naming.factory.ResourceFactory.getObjectInstance (ResourceFactory.java:143) \t à javax.naming.spi. NamingManager.getObjectInstance (Source inconnue) \t à org.apache.naming.NamingContext.lookup (NamingContext.java:793) – user229432

+0

Vous êtes un pas de plus! Votre code a finalement trouvé la ressource, mais la création de la ressource elle-même a échoué. Essayez de regarder un peu plus loin dans la pile, ne voyez-vous pas une cause profonde? Les causes possibles sont une syntaxe XML malformée (un '' '', '<' or '>' manquant ou trop) ou une typo de type, factory ou pathname (tous sont sensibles à la casse!) .S'il vous plaît savoir si vous l'avez trouvé. référence. – BalusC

Questions connexes