[
https://issues.apache.org/jira/browse/TOMEE-2989?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Richard Zowalla closed TOMEE-2989.
----------------------------------
Resolution: Incomplete
Closing, as there are no steps to reproduce the reload. Please reopen with a
sample app if it still happens on 10.x or 11.
> ClassCastException for javax.sql.DataSource on app reload
> ---------------------------------------------------------
>
> Key: TOMEE-2989
> URL: https://issues.apache.org/jira/browse/TOMEE-2989
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Core Server
> Affects Versions: 8.0.6
> Environment: Windows 10 (64), OpenJDK 15, TomEE PLUME 8.0.6
> Reporter: Makkus B.
> Priority: Major
>
> On application relaod I recieve the following error:
> {{{color:#000000}java.lang.ClassCastException: class
> org.apache.openejb.core.ivm.naming.IvmContext cannot be cast to class
> javax.sql.DataSource (org.apache.openejb.core.ivm.naming.IvmContext is in
> unnamed module of loader java.net.URLClassLoader @2aaf7cc2;
> javax.sql.DataSource is in module java.sql of loader 'platform'){color}}}
> Root Cause seems to be here:
> {{java.lang.ClassCastException: class
> org.apache.openejb.core.ivm.naming.IvmContext cannot be cast to class
> javax.sql.DataSource (org.apache.openejb.core.ivm.naming.IvmContext is in
> unnamed module of loader java.net.URLClassLoader @2aaf7cc2;
> javax.sql.DataSource is in module java.sql of loader 'platform')}}
> {{
> org.apache.tomee.security.identitystore.TomEEDatabaseIdentityStore.lookup(TomEEDatabaseIdentityStore.java:171)}}
> {{
> org.apache.tomee.security.identitystore.TomEEDatabaseIdentityStore.query(TomEEDatabaseIdentityStore.java:143)}}
> {{
> org.apache.tomee.security.identitystore.TomEEDatabaseIdentityStore.validate(TomEEDatabaseIdentityStore.java:94)}}
> {{
> org.apache.tomee.security.identitystore.TomEEDatabaseIdentityStore$$OwbNormalScopeProxy7.validate(org/apache/tomee/security/identitystore/TomEEDatabaseIdentityStore.java)}}
> {{
> org.apache.tomee.security.identitystore.TomEEIdentityStoreHandler.validate(TomEEIdentityStoreHandler.java:74)}}
> {{
> org.apache.tomee.security.identitystore.TomEEIdentityStoreHandler$$OwbNormalScopeProxy11.validate(org/apache/tomee/security/identitystore/TomEEIdentityStoreHandler.java)}}
> {{
> org.apache.tomee.security.cdi.CustomFormAuthenticationMechanism.validateRequest(CustomFormAuthenticationMechanism.java:50)}}
> {{ jdk.internal.reflect.GeneratedMethodAccessor214.invoke(Unknown Source)}}
> {{
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}}
> {{ java.base/java.lang.reflect.Method.invoke(Method.java:564)}}
> {{
> org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113)}}
> {{
> org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106)}}
> {{
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:78)}}
> {{
> org.apache.tomee.security.cdi.LoginToContinueInterceptor.processContainerInitiatedAuthentication(LoginToContinueInterceptor.java:143)}}
> {{
> org.apache.tomee.security.cdi.LoginToContinueInterceptor.validateRequest(LoginToContinueInterceptor.java:78)}}
> {{
> org.apache.tomee.security.cdi.LoginToContinueInterceptor.intercept(LoginToContinueInterceptor.java:63)}}
> {{ jdk.internal.reflect.GeneratedMethodAccessor213.invoke(Unknown Source)}}
> {{
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}}
> {{ java.base/java.lang.reflect.Method.invoke(Method.java:564)}}
> {{
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)}}
> {{
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:65)}}
> {{
> org.apache.tomee.security.cdi.AutoApplySessionInterceptor.validateRequest(AutoApplySessionInterceptor.java:60)}}
> {{
> org.apache.tomee.security.cdi.AutoApplySessionInterceptor.intercept(AutoApplySessionInterceptor.java:47)}}
> {{ jdk.internal.reflect.GeneratedMethodAccessor212.invoke(Unknown Source)}}
> {{
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}}
> {{ java.base/java.lang.reflect.Method.invoke(Method.java:564)}}
> {{
> org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)}}
> {{
> org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:65)}}
> {{
> org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)}}
> {{
> org.apache.tomee.security.cdi.CustomFormAuthenticationMechanism$$OwbInterceptProxy11.validateRequest(org/apache/tomee/security/cdi/CustomFormAuthenticationMechanism.java)}}
> {{
> org.apache.tomee.security.cdi.CustomFormAuthenticationMechanism$$OwbNormalScopeProxy12.validateRequest(org/apache/tomee/security/cdi/CustomFormAuthenticationMechanism.java)}}
> {{
> org.apache.tomee.security.cdi.DefaultAuthenticationMechanism.validateRequest(DefaultAuthenticationMechanism.java:43)}}
> {{
> org.apache.tomee.security.cdi.DefaultAuthenticationMechanism$$OwbNormalScopeProxy12.validateRequest(org/apache/tomee/security/cdi/DefaultAuthenticationMechanism.java)}}
> {{
> org.apache.tomee.security.provider.TomEESecurityServerAuthModule.validateRequest(TomEESecurityServerAuthModule.java:106)}}
> {{
> org.apache.tomee.security.provider.TomEESecurityServerAuthContext.validateRequest(TomEESecurityServerAuthContext.java:50)}}
> {{
> org.apache.tomee.security.TomEESecurityContext.authenticate(TomEESecurityContext.java:92)}}
> I have defined a custom web authentication using a JDBC Data source define
> in context.xml:
> {{ <Resource auth="Container" }}
> {{ driverClassName="org.apache.derby.client.ClientAutoloadedDriver" }}
> {{ initialSize="1" logAbandoned="true" maxIdle="1" maxTotal="2" }}
> {{ name="jdbc/authority" password="pw" removeAbandoned="true"}}
> {{ type="javax.sql.DataSource"
> url="jdbc:derby://localhost:1527//Authority;create=true" username="name"/>}}
>
> The custom authentication credentials are stored in this database and are
> declared via:
> {{@DatabaseIdentityStoreDefinition(}}
> {{ dataSourceLookup = "jdbc/authority",}}
> {{ callerQuery = "select user_pass from users where user_name = ?",}}
> {{ groupsQuery = "select role_name from user_roles where user_name = ?",}}
> {{ hashAlgorithm = Pbkdf2PasswordHash.class,}}
> {{ hashAlgorithmParameters = {}}
> {{ "Pbkdf2PasswordHash.Algorithm=PBKDF2WithHmacSHA512",}}
> {{ "Pbkdf2PasswordHash.Iterations=10000",}}
> {{ "Pbkdf2PasswordHash.KeySizeBytes=256",}}
> {{ "Pbkdf2PasswordHash.SaltSizeBytes=16"}}
> {{ }}}
> {{)}}
> The problem is: On first start everything is fine. But when doing a webapp
> reload, the following code (and obviously any attemts to resolve the
> resource) will not return a DataSource but a
> org.apache.openejb.core.ivm.naming.IvmContext:
> {{InitialContext ic = new InitialContext();}}
> {{ Object obj = ic.lookup("java:comp/env/jdbc/authority");}}
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)