cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Help with NoClassDefFoundError for com/sap/aii/security/lib/exception/SecurityException in EJB Proj

syedijlalayub
Explorer
0 Kudos
771

Hi everyone,

I am encountering a NoClassDefFoundError for com/sap/aii/security/lib/exception/SecurityException in my EJB project deployed on SAP NetWeaver. Here are the details of my setup and the issue:

Project Setup:

  • I have an EAR project that includes an EJB module and a Dynamic Web Project (DWP).
  • I am using Eclipse for development and SAP PO (Process Orchestration) for deployment.

Issue: When my EJB bean executes the line following line
SAPSecurityResources secRes = SAPSecurityResources.getInstance();
I get the error NoClassDefFoundErrorcom/sap/aii/security/lib/exception/SecurityException

Here's the full stack trace for the error:

 

javax.ejb.EJBException: nested exception is: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sap/aii/security/lib/exception/SecurityException
java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sap/aii/security/lib/exception/SecurityException
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:99)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy3585.loadCertificate(Unknown Source)
at com.myname.mycompany.myclient.servlet.certificates.CertificateRetrieveServlet.doGet(CertificateRetrieveServlet.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)
at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:38)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:466)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:210)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:438)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:427)
at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:81)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:278)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)
at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.SessionSizeFilter.process(SessionSizeFilter.java:26)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:57)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:43)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:468)
at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:262)
at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)
at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
Caused by: java.lang.NoClassDefFoundError: com/sap/aii/security/lib/exception/SecurityException
at com.myname.mycompany.myclient.ejb.certificates.CertificateManagement.loadCertificate(CertificateManagement.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
... 63 more
Caused by: java.lang.ClassNotFoundException: com.sap.aii.security.lib.exception.SecurityException
------------------------- Loader Info -------------------------
ClassLoader name: [sap.com/myclient2partyLdap-ear-jp-library-loader]
Loader hash code: 75994782
Living status: alive
Direct parent loaders:
[system:Frame]
[library:javax~persistence~api]
[library:javax~annotation~api]
[library:servlet]
[library:j2eeca]
[library:activation_api_ri]
[library:mail_api_ri]
[library:saaj13_api]
[library:jaxb20_api]
[library:jaxws_api]
[library:jws_api]
[library:ec~java~jsf~api]
[library:tc~je~deployment14_api]
[library:jms_api]
[library:tc~je~jacc~plb]
[library:ejb_api]
[library:tc~je~javax77]
[library:jaxr_api]
Resources:
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.aii.af.svc.filter.jar
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.aii.af.svc.facade.jar
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.aii.af.cpa.svc.filter.jar
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.security_2.0.0.201214143317.jar
---------------------------------------------------------------
at com.sap.engine.boot.loader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:280)
at com.sap.engine.boot.loader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:249)
... 69 more
javax.ejb.EJBException: nested exception is: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sap/aii/security/lib/exception/SecurityException
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:99)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy3585.loadCertificate(Unknown Source)
at com.myname.mycompany.myclient.servlet.certificates.CertificateRetrieveServlet.doGet(CertificateRetrieveServlet.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)
at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:38)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:466)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:210)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:438)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:427)
at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:81)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:278)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)
at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.SessionSizeFilter.process(SessionSizeFilter.java:26)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:57)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:43)
at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:468)
at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:262)
at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)
at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sap/aii/security/lib/exception/SecurityException
... 64 more
Caused by: java.lang.NoClassDefFoundError: com/sap/aii/security/lib/exception/SecurityException
at com.myname.mycompany.myclient.ejb.certificates.CertificateManagement.loadCertificate(CertificateManagement.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
... 63 more
Caused by: java.lang.ClassNotFoundException: com.sap.aii.security.lib.exception.SecurityException
------------------------- Loader Info -------------------------
ClassLoader name: [sap.com/myclient2partyLdap-ear-jp-library-loader]
Loader hash code: 75994782
Living status: alive
Direct parent loaders:
[system:Frame]
[library:javax~persistence~api]
[library:javax~annotation~api]
[library:servlet]
[library:j2eeca]
[library:activation_api_ri]
[library:mail_api_ri]
[library:saaj13_api]
[library:jaxb20_api]
[library:jaxws_api]
[library:jws_api]
[library:ec~java~jsf~api]
[library:tc~je~deployment14_api]
[library:jms_api]
[library:tc~je~jacc~plb]
[library:ejb_api]
[library:tc~je~javax77]
[library:jaxr_api]
Resources:
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.aii.af.svc.filter.jar
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.aii.af.svc.facade.jar
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.aii.af.cpa.svc.filter.jar
/usr/sap/PO1/J00/j2ee/cluster/apps/sap.com/myclient2partyLdap-ear-jp/app_libraries_container/lib/com.sap.security_2.0.0.201214143317.jar
---------------------------------------------------------------
at com.sap.engine.boot.loader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:280)
at com.sap.engine.boot.loader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:249)
... 69 more

According to help.sap.com/PI/com/sap/aii/af/service/resource/SAPSecurityResources documentation, only com.sap.aii.af.svc.facade jar file is needed to make an instance of SAPSecurityResources object if you want to access KeyStoreManager and manage certificates, but somehow my code doesn't run.

Steps Taken:
  1. I have added the necessary JAR files to the EAR project's lib directory.
  2. I have ensured these JAR files are included in the EAR deployment assembly.

I have also added these JAR files to the EJB and Dynamic Web Projects' build paths in Eclipse.

Any help would be greatly appreciated. 


other Questions:

  1. Is it sufficient to add the required JARs only to the EAR lib directory, or do they need to be explicitly referenced in the EJB and DWP projects' deployment assembly?

P.S I have accessed keystore views in java mappings using the exact same api but in the setup mentioned above I get the NoClassDefFoundError.

Thanks
Syed Ijlal Ayub

View Entire Topic
anupam_ghosh2
Active Contributor
0 Kudos

Hi Syed,

while using NWDS add the jar files by this method shown below though build path.

 This should fix all dependencies automatically. 

anupam_ghosh2_0-1716890245322.jpeganupam_ghosh2_1-1716890260069.jpeg

In case you are adding external jars for example apache classes then dependencies need to be resolved by adding external jars to project path. 

Regards

Anupam 

 

 

 

syedijlalayub
Explorer
0 Kudos
Dear Anupam, the issue has been resolved already. I will post a detailed answer shortly. Thanks a lot for your answer
CCSAPCEPSA
Explorer
0 Kudos
Hi syedijlalayub, can you shared your solution, please?
syedijlalayub
Explorer
0 Kudos
@CCSAPCEPSA please check.
CCSAPCEPSA
Explorer
0 Kudos
Hi syedijlalayub. Thank you very much for your detailed answer. We want to do a Java mapping in our PO (Netweaver 7.5 SP25). You wrote: "In a JavaMapping in SAP PI when you want to access KeyStoreManager you do it using Class SAPSecurityResources in com.sap.aii.af.svc.facade API found in PO by default." but in our PO we only have an empty folder called com.sap.aii.af.svc.facade without any jar file. Do you know where we can get com.sap.aii.af.svc.facade.jar in order to use the class SAPSecurityResources? Meanwhile we are trying to resolve it with your solution 🙂
CCSAPCEPSA
Explorer
0 Kudos
I'll correct the above. Inside the folder, there's a file called com.sap.aii.af.svc.facade_api.jar, but it doesn't include the implementation of SAPSecurityResources class.
syedijlalayub
Explorer
0 Kudos
@CCSAPCEPSA that's doesn't sound normal. Inside com.sap.aii.af.svc.facade folder you should see three jar files 1) com.sap.aii.af.cpa.svc.filter.jar 2) com.sap.aii.af.svc.facade.jar 3) com.sap.aii.af.svc.filter.jar. #3 is the library you need for SAPSecurityResources.