2016-12-04 6 views
1

のcontextInitialized方法でMySQLのJDBCリソースにアクセスすることはできません私のWebアプリケーションでは、このようなサーブレットリスナーを持っています私はTomcatのサーバー8.5にアップグレードするとき、それは起動時に例外をスロー:のTomcat 8.5はのServletContextListener

javax.naming.NameNotFoundException: Name [jdbc/mysql/mydb] is not bound in this Context. Unable to find [jdbc]. 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:816) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:827) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:827) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:173) 
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:163) 
    at javax.naming.InitialContext.lookup(InitialContext.java:417) 
    ... 

をとにかく、私は何の問題もなく同じコードを使用して(他のサーブレットで)サーバstarup後のmysqlの接続を取得することができます。ですから、質問は、Tomcatの起動時にこのエラーを引き起こす原因は何ですか?

UPDATEここ
である私のバーチャルホストの設定:

私は解決するために私のTomcatの context.xmlに(これに似た)行を追加しているあなたのような同様の問題を、持っていた
<Host name="my-domain.ir" appBase="/var/www/webapp" > 
    <Context path="" docBase="MyWebApp" 
    xmlValidation="false" xmlNamespaceAware="false" crossContext="false" reloadable="false" > 
    <Resource name="jdbc/mysql/mydb" auth="Container" type="javax.sql.DataSource" 

    initialSize="1" maxTotal="100" maxIdle="2" 
    maxWaitMillis="20000" removeAbandonedOnMaintenance="true" removeAbandonedTimeout="300" 
    validationQuery="select now();" 

    username="myUser" password="myPass" driverClassName="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8&amp;connectionCollation=UTF8_PERSIAN_CI&amp;noAccessToProcedureBodies=true" 
    /> 
    </Context> 
</Host> 
+0

あなたの 'context.xml'を共有できますか? –

+0

@ N00bPr0grammerこれはtomcat 8.5のデフォルトの 'context.xml'です。私はそれを変更していません。しかし、もしあなたが私のWebアプリケーションの 'Context'要素を意味するならば、私はそれを更新に加えました。 –

答えて

0

問題。

<ResourceLink global="jdbc/mysql/mydb" name="jdbc/mysql" type="javax.sql.DataSource"/> 

は、同様のソリューション

Question-1

Question-2

Question-3

に役立ちます希望を指摘する質問へのリンクです!

+0

しかし、私はあまりにも多くの仮想ホストを持っているので、私はこれを行うことはできません。それらをグローバルにしません。さらに、このような状況には合理的な理由があるはずです。 –

+0

これで面白いですが、私はこれで何ができるのか見てみましょう! –

関連する問題