2011-07-06 51 views
1

RDS/MySQLインスタンスを使用するようにTomcat 7を設定しようとしていますが、運がないです。私は問題が私のcontext.xmlにあると思う。 context.xmlが存在すると、Eclipse経由でリモートデバッグできないため、DBコードで何が起きているのかをデバッグできないような悪いことが起こります。私のcontext.xml(無実を保護するために除去ユーザー名/パスワードなどの詳細を含む):RDSと連携するJNDIの取得

<?xml version='1.0' encoding='utf-8'?> 
<Context path="/puppy" reloadable="true" crossContext="true"> 
    <Resource name="jdbc/myDB" 
     auth="Container" 
     type="javax.sql.DataSource" 
     username="username" 
     password="password" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://rds-instance:3306/myDB?autoReconnect=true" 
     validationQuery="select 1" 
     maxActive="10" 
     maxIdle="4"/> 
</Context> 

アプリを展開する際には、私は私のログに、次を得る:

WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/puppy]] so no cleanup was performed for that container 
javax.naming.NameNotFoundException: Name comp is not bound in this Context 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:803) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:159) 
    at org.apache.catalina.deploy.NamingResources.cleanUp(NamingResources.java:975) 
    at org.apache.catalina.deploy.NamingResources.stopInternal(NamingResources.java:957) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5504) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3847) 
    at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:949) 
    at org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:676) 
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:214) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:187) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:572) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:636) 
Jul 6, 2011 4:44:52 AM org.apache.catalina.core.NamingContextListener lifecycleEvent 
SEVERE: Creation of the naming context failed: javax.naming.NamingException: Context is read only 

何が起こっているすべてのアイデアを? RDSでJNDIを使用していない人はいますか?最善のアプローチは何ですか?

答えて

0

これは、以前のアプリケーションがtomcatコンテナから適切にアンデプロイされていない可能性があるためです。

tomcatを停止し、tomcat confディレクトリ/<Tomcat root>/conf/Catalina/localhostに移動し、そのディレクトリのxmlファイルを消去します。 tomcatを再起動してください。

注:1.これらのxmlファイルを削除する前にバックアップしてください。削除しないと元に戻すことができます。

0

tomcat8のjndiリファレンスを使用してwebappを展開しようとするとローカルで同様の問題が発生しました。 Tomcatの新しいバージョンは、サーバーのcontext.xml設定でリソースをリンクする必要があるようです。

<ResourceLink name="JDBC_DATASOURCE_NAME_DEF_IN_SERVER:XML" global="JDBC_DATASOURCE_NAME_DEF_IN_SERVER:XML" type="javax.sql.DataSource"/> 

JDBC_DATASOURCE_NAME_DEF_IN_SERVER: は、私の場合は、サーバーのcontext.xmlに以下の行を追加し、それを解決したXMLは、あなたのTomcatインスタンスのserver.xml構成ファイル内のリソースを定義するために使用される名前を使用することを意味します。

名前は、展開されたアプリケーションコンテキストにリソースを公開するために使用される名前です。

グローバルattr.- tomcatのserver.xml構成ファイルで定義されているjndiリソースの名前。

これが役に立ちます。

関連する問題