Tomcat で Java ベースの Web アプリケーションを使用しています。これを使用して、アプリケーションを Oracle に接続します。
<Resource name="jdbc/conn" auth="Container" type="oracle.jdbc.pool.OracleDataSource" driverClassName="oracle.jdbc.driver.OracleDriver" factory="oracle.jdbc.pool.OracleDataSourceFactory" url="jdbc:oracle:thin:@XXX.XXX.XXX.XXX:1521:XE" user="XXX" password="XXX" maxActive="100" maxIdle="30" maxWait="10000" scope="Shareable"/>
私はSQLServerで同じことをしようとしています:
<Resource name="jdbc/conn" auth="Container" type="com.microsoft.sqlserver.jdbc.SQLServerDataSource" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" factory="com.microsoft.sqlserver.jdbc.SQLServerDataSourceObjectFactory" url="jdbc:sqlserver://XXX.XXX.XXX.XXX:1433;databaseName=XXX" username="XXX" password="XXX" maxActive="100" maxIdle="30" maxWait="10000"/>
しかし、これはうまくいきません!
type="javax.sql.DataSource" を使用して両方の状況を管理できることはわかっていますが、OracleDataSource と SQLServerDataSource でデータソースをキャストする必要があります... Java コードは次のとおりです。
Context ctx = new InitialContext();
Object obj = ctx.lookup("java:comp/env/jdbc/conn");
私はこの例外を受け取ります:
Unexpected exception resolving reference
com.microsoft.sqlserver.jdbc.SQLServerException: Riferimento DataSource non valido.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerDataSourceObjectFactory.getObjectInstance(SQLServerDataSourceObjectFactory.java:37)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:140)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
助けてくれますか?