mi permetta di descrivere l'ambiente prima:apache tomcat 7.0.30 datasourcerealm javax.naming.NameNotFoundException: Nome [jdbc/proto] non è associato in questo contesto. Impossibile trovare [JDBC]
ambiente: - Mac OS X (java costruire 1.6.0_35-b10-428-11M3811) - Tomcat di Apache 7.0.30 - mysql 5.5.27 - tomcat/lib -> mysql-connector-java-5.1.22-bin.jar
Ho implementato con successo un JDBCRealm e si desidera passare a un DataSourceRealm perché è raccomandato per ambienti di produzione. io uso l'autenticazione basata su form.
ho fatto tutto descritto qui: http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#DataSourceRealm e qui: 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>
quando presento il nome utente e la password ottengo la seguente eccezione:
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)
non ho cercato di impostare l'ambiente su un diverso sistema operativo per verificare se si tratta di un problema specifico per Mac.
qualche suggerimento cosa ho perso? Apprezzo il vostro aiuto! grazie.
funziona quando sposto la voce da ** context.xml ** a ** server.xml - ** -> ma lo voglio davvero? –
user1681351