2016-05-17 1 views
0

Il existe déjà quelques questions à propos de ce sujet mais aucun d'entre eux n'était une solution à mon problème. Ce que je veux faire est un écran de connexion de base en utilisant une authentification basée sur le formulaire dans Java EE sur un serveur glassfish. Maintenant, le problème est que j'obtiens toujours à la page d'erreur. Voici un journal de l'erreur que je reçois:JDBCRealm impossible de se connecter à la source de données pour l'authentification

javax.security.auth.login.LoginException: Unable to connect to datasource jdbc/connectionPool for database user null. 
    at com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm.getConnection(JDBCRealm.java:585) 
    at com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm.isUserValid(JDBCRealm.java:408) 
    at com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm.authenticate(JDBCRealm.java:324) 
    at com.sun.enterprise.security.ee.auth.login.JDBCLoginModule.authenticate(JDBCLoginModule.java:78) 
    at com.sun.enterprise.security.auth.login.PasswordLoginModule.authenticateUser(PasswordLoginModule.java:116) 
    at com.sun.enterprise.security.BasePasswordLoginModule.login(BasePasswordLoginModule.java:145) 
    at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:587) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:383) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:241) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:154) 
    at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:695) 
    at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:636) 
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:279) 
    at org.apache.catalina.authenticator.AuthenticatorBase.processSecurityCheck(AuthenticatorBase.java:1015) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:601) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:702) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.naming.NamingException: Lookup failed for 'jdbc/connectionPool' in SerialContext[myEnv={com.sun.enterprise.connectors.jndisuffix=__nontx, java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: connectionPool not found] 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491) 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438) 
    at javax.naming.InitialContext.lookup(InitialContext.java:417) 
    at javax.naming.InitialContext.lookup(InitialContext.java:417) 
    at org.glassfish.resourcebase.resources.naming.ResourceNamingService.lookup(ResourceNamingService.java:236) 
    at com.sun.enterprise.connectors.service.ConnectorResourceAdminServiceImpl.lookup(ConnectorResourceAdminServiceImpl.java:224) 
    at com.sun.enterprise.connectors.ConnectorRuntime.lookupNonTxResource(ConnectorRuntime.java:553) 
    at com.sun.enterprise.connectors.ConnectorRuntime.lookupNonTxResource(ConnectorRuntime.java:538) 
    at com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm.getConnection(JDBCRealm.java:573) 
    ... 48 more 
Caused by: javax.naming.NameNotFoundException: connectionPool not found 
    at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:237) 
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:204) 
    at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:208) 
    at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:66) 
    at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:114) 
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:478) 
    ... 56 more 

Précis: JAAS authentication aborted. 
Le plus précis: doPasswordLogin fails 
javax.security.auth.login.LoginException: Security Exception 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:840) 
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682) 
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) 
    at javax.security.auth.login.LoginContext.login(LoginContext.java:587) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:383) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:241) 
    at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:154) 
    at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:695) 
    at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:636) 
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:279) 
    at org.apache.catalina.authenticator.AuthenticatorBase.processSecurityCheck(AuthenticatorBase.java:1015) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:601) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:702) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.SecurityException 
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:841) 
    ... 39 more 

Voici quelques-unes de mes configurations:

GlassFish-resources.xml:

<resources> 
     <jdbc-resource enabled="true" jndi-name="jdbc/connectionPool" object-type="user" pool-name="connectionPool"/> 
     <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="org.apache.derby.jdbc.ClientDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="derby_net_TestProject_rootPool" non-transactional-connections="false" ping="false" pool-resize-quantity="2" pooling="true" res-type="javax.sql.DataSource" statement-cache-size="0" statement-leak-reclaim="false" statement-leak-timeout-in-seconds="0" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false"> 
     <property name="URL" value="jdbc:derby://localhost:1527/TestProject"/> 
     <property name="serverName" value="localhost"/> 
     <property name="portNumber" value="1527"/> 
     <property name="databaseName" value="TestProject"/> 
     <property name="User" value="root"/> 
     <property name="Password" value="root"/> 
     <property name="driverClass" value="org.apache.derby.jdbc.ClientDriver"/> 
     </jdbc-connection-pool> 
    </resources> 

Ma configuration Realm:

Realm config

Et la base de données:

enter image description here

Si je comprends bien, mon serveur est incapable de se connecter à la source de données, mais je ne sais pas pourquoi? Merci d'avance pour votre aide!

Répondre

0

Vous devez placer le fichier derbyclient.jar dans le dossier glassfish lib et redémarrer le glassfish et créer maintenant votre pool de connexions, cela fonctionnera.

+0

Merci pour votre réponse et désolé pour la réponse tardive. J'ai essayé cela mais je n'ai pas réparé. Maintenant, au lieu de cette erreur: "" "javax.naming.NameNotFoundException: ConnectionPool not found" "" je suis celui-ci: "" "javax.naming.NamingException: exception Invocation: Vous avez ComponentInvocation null" "" – Allinone51

+0

Je suis incapable de trouver la solution exacte, s'il vous plaît consulter ce lien cela peut aider https://web.liferay.com/community/wiki/-/wiki/Main/Derby+with+Glassfish – SivaTeja