2012-09-18 3 views
7

나를 먼저 환경을 설명하자apache tomcat 7.0.30 datasourcerealm javax.naming.NameNotFoundException : 이름 [jdbc/proto]이 (가)이 컨텍스트에 바인딩되어 있지 않습니다. 찾을 수 없습니다 [JDBC는]

환경 : - 맥 OS X (자바 1.6.0_35-b10-428-11M3811를 구축) - 아파치 톰캣 7.0.30 - MySQL은 5.5.27 - 바람둥이/lib에 -> MySQL의 커넥터 - 자바-5.1.22-bin.jar를

나는 JDBCRealm 성공적으로 구현하고 DataSourceRealm로 전환하고자 한 것이 권장되기 때문에 생산 환경. 나는 폼 기반 인증을 사용한다.

나는 모든 여기에 설명 않았다 : 여기 http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#DataSourceRealm 과 : http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html#MySQL_DBCP_Example

server.xml에

<Realm className="org.apache.catalina.realm.LockOutRealm"> 
    <Realm className="org.apache.catalina.realm.DataSourceRealm" 
      dataSourceName="jdbc/proto" digest="SHA-256" roleNameCol="role" 
      userCredCol="password" userNameCol="name" userRoleTable="roles" 
      userTable="users"/> 
</Realm> 

의 context.xml을

<Resource auth="Container" 
      driverClassName="com.mysql.jdbc.Driver" 
      maxActive="100" maxIdle="30" maxWait="10000" 
      name="jdbc/proto" password="proto" type="javax.sql.DataSource" 
      url="jdbc:mysql://localhost:3306/proto" username="proto"/> 

WEB-INF/web.xml을

<resource-ref> 
    <description>DB Connection</description> 
    <res-ref-name>jdbc/proto</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

나는 다음과 같은 예외가 얻을 사용자 이름과 암호를 제출할 때 :

Sep 18, 2012 9:38:32 PM org.apache.catalina.realm.DataSourceRealm open 
SEVERE: Exception performing authentication 
javax.naming.NameNotFoundException: Name [jdbc/proto] is not bound in this Context. Unable to find [jdbc]. 
at org.apache.naming.NamingContext.lookup(NamingContext.java:820) 
at org.apache.naming.NamingContext.lookup(NamingContext.java:168) 
at org.apache.catalina.realm.DataSourceRealm.open(DataSourceRealm.java:394) 
at org.apache.catalina.realm.DataSourceRealm.authenticate(DataSourceRealm.java:285) 
at org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:146) 
at org.apache.catalina.realm.LockOutRealm.authenticate(LockOutRealm.java:180) 
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:295) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:450) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:680) 

내가 다른 운영 체제에 설치로 환경을 시도하지 않은를 Mac 특정 문제인지 테스트합니다.

나는 무엇을 놓쳤는가? 도와 줘서 고마워! 고맙습니다. 문제 내 경우

+0

** context.xml **에서 ** server.xml - ** -> 항목을 이동할 때 작동하지만 실제로 필요합니까? – user1681351

답변

0

내가 내 pom.xml 파일에서 충돌 의존성을했다이었다. 내 경우에는 java-naming 종속성이었습니다. Tomcat의 이름 지정 라이브러리와 충돌하는 이름 지정/Jar가 없는지 확인하십시오. 나는 그것을 제거 후

, 문제는 (BTW 당신 같은 환경) 사라 졌어요.

3

이 경우에는 영역 (이 경우 서버 수준에서 선언 됨)에서 jdbc/proto (이 경우 웹 응용 프로그램 수준에서 선언 됨)을 사용하려고하기 때문입니다.)

다음

은 내가 이해하는 자바 서버 컨텍스트 계층 구조

  1. 서버
  2. 호스트
  3. 웹 응용 컨텍스트 (server.xml에, 또는 META-INF 콘테의 수입니다 xt.GlobalNamingResources에서 ressource를 선언 방지하기 위해 XML)
1

사실이 [jdbc/proto] 그래서

<ResourceLink global="jdbc/proto" name="jdbc/proto"/> 

같은 속성으로 ProjectName.xml에서 언급 한 영역에서 localDataSource = "true"로 넣어 ProjectName.xml 파일이 tomcatInstances/ServerName/conf/Catalina/localhost/ProjectName.xml에 있고이 리소스 링크가 있고 예외가 사라 졌는지 확인하십시오.

는 또한 같은 문제에 직면하고 응용 프로그램의 로컬 컨텍스트 파일을 다시에서 파일을 복원 위치

tomcatInstances/ServerName/conf/Catalina/localhost/ProjectName.xml 

에서 어떤 이유로 삭제 완료있어 것을 가지고 ... 그 작업을 잘 지금, 희망이 누군가를 도울 것입니다.

+0

'ProjectName.xml'에 무엇이 있어야합니까? – krismath

관련 문제