2

データソースを機能させるために、以下の多くのバリアントを試しましたが、役に立ちませんでした。私は数日間調査/試行していたので、タオルを投げて助けを求めています. まず最初に、この投稿でコードをフォーマットするのに苦労しています。何もインデントされず、特定の xml タグが消えています。おそらくばかげた IE が動作するため、強制的に使用する必要があります....

web.xml

<resource-ref>
    <res-ref-name>jdbc/nalabor</res-ref-name>
    <res-type>oracle.jdbc.pool.OracleDataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

<resource-ref>
    <res-ref-name>jdbc/navarch</res-ref-name>
    <res-type>oracle.jdbc.pool.OracleDataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

context.xml

<?xml version="1.0" encoding="UTF-8"?>

<Context>
  <Resource
    name="jdbc/nalabor" type="oracle.jdbc.pool.OracleDataSource"
    maxActive="1" maxIdle="1" maxWait="10000" 
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@####.com:1521:SID"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    username="###" password="###"/>

  <Resource
    name="jdbc/navarch" type="oracle.jdbc.pool.OracleDataSource"
    maxActive="1" maxIdle="1" maxWait="10000"
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@####.com:1521:SID"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    username="###" password="###"/>
</Context>

ダオ

try {      
  Context initContext = new InitialContext();
  NamingEnumeration list = initContext.list("java:/comp/env");
  System.out.println("Listing NamingEnumeration For java:/comp/env");
  while (list.hasMore()) {
    NameClassPair nc = (NameClassPair)list.next();
    System.out.println("Name Class Pair = " + nc);
  }

  list = initContext.list("java:/comp/env/jdbc");
  System.out.println("Listing NamingEnumeration java:/comp/env/jdbc");
  while (list .hasMore()) {
    NameClassPair nc = (NameClassPair)list .next();
    System.out.println("Name Class Pair = " + nc);
  }

  Context envContext = (Context) initContext.lookup("java:/comp/env");
  ods = (OracleDataSource) envContext.lookup("jdbc/nalabor");
} catch (Exception ex) {
  System.out.println("ERORRRRRRRR AGAIN!");
  ex.printStackTrace();
}

スタック

Listing NamingEnumeration For java:/comp/env
Name Class Pair = mailClient: java.lang.String
Name Class Pair = siteConnCache: java.lang.String
Name Class Pair = jdbc: org.apache.naming.NamingContext
Name Class Pair = sitePOCEmail: java.lang.String
Name Class Pair = siteFilePrefix: java.lang.String
Name Class Pair = siteName: java.lang.String
Name Class Pair = siteEmail: java.lang.String

Listing NamingEnumeration java:/comp/env/jdbc
Name Class Pair = nalabor: org.apache.naming.ResourceRef
Name Class Pair = navarch: org.apache.naming.ResourceRef
ERORRRRRRRR AGAIN!
javax.naming.NamingException: Cannot create resource instance    
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:314)
at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
at com.gdebI.rozycki.bsc.data.LaborDAO.getWeightedLabor(LaborDAO.java:91)
at com.gdebI.rozycki.bsc.controller.action.WeightedLabor.getList(WeightedLabor.java:66)
at com.gdebI.rozycki.controller.action.ListAction.service(ListAction.java:38)

WEB-INF/lib

ojdbc14.jar
4

2 に答える 2

1

リソースを web.xml にリストした理由はわかりませんが、問題の原因となっている余分な / を含めていると思います。名前が見つからない場合、この例外が発生しました。これを試してください(Java 6+):

OracleDataSource ods = InitialContext.doLookup("java:comp/env/jdbc/nalabor");

またはこれはJava 5以下の場合:

InitialContext ic = new InitialContext();
OracleDataSource ods = (OracleDataSource)ic.lookup("java:comp/env/jdbc/nalabor");
于 2012-05-10T15:54:21.580 に答える
0

私はこの問題を解決します。web.xml 内の要素の順序に注意してください。http://wiki.apache.org/tomcat/Specificationsが言うように、私の Web アプリの web.xml の要素の順序に頼り、それは機能します。

于 2013-06-24T13:13:37.133 に答える