KB Article #176934

OAM startup error NoClassDefFoundError: oracle/security/am/asdk/AccessException

Problem

Oracle Access Manager error when starting a Gateway instance :-

com.vordel.es.EntityStoreException: Failed to configure module: '/[NetService]name=Service/[HTTP]name=Default Services' reason: 'oracle/security/am/asdk/AccessException'
at com.vordel.precipitate.SolutionPack.throwit(SolutionPack.java:619)
at com.vordel.precipitate.SolutionPack.loadModules(SolutionPack.java:594)
at com.vordel.dwe.Service.refresh(Service.java:423)
at com.vordel.dwe.Service.<init>(Service.java:380)
Caused by: java.lang.NoClassDefFoundError: oracle/security/am/asdk/AccessException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at com.vordel.circuit.oracle.AccessManagerSSOTokenValidationFilter.getMessageProcessorClass(AccessManagerSSOTokenValidationFilter.java:21)
at com.vordel.dwe.ServiceCircuitCache.create(Service.java:61)
at com.vordel.circuit.Circuit.createContainer(Circuit.java:265)
at com.vordel.circuit.Circuit.loadFilter(Circuit.java:214)
at com.vordel.circuit.Circuit.loadFilter(Circuit.java:218)
at com.vordel.circuit.Circuit.configure(Circuit.java:183)
at com.vordel.circuit.CircuitCache.getCircuit(CircuitCache.java:61)
at com.vordel.circuit.CircuitChainFilter.resolveCircuits(CircuitChainFilter.java:68)
at com.vordel.circuit.CircuitChainProcessor.attach(CircuitChainProcessor.java:25)
at com.vordel.dwe.http.HTTPPlugin.configureCircuits(HTTPPlugin.java:167)
at com.vordel.dwe.http.HTTPPlugin.configure(HTTPPlugin.java:121)
at com.vordel.dwe.NativeModule.configure(NativeModule.java:127)
at com.vordel.dwe.NativeModule.configure(NativeModule.java:58)
at com.vordel.precipitate.SolutionPack.loadModules(SolutionPack.java:592)
... 2 more
Caused by: java.lang.ClassNotFoundException: oracle.security.am.asdk.AccessException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 18 more




Resolution

The NoClassDefFoundError is caused by not having OAM 11g ASDK installed on the same machine as the API Gateway. It was not required pre-7.2, but post 7.2 versions are built using the Java-based 11g ASDK. Since we don't have the rights to ship with this ASDK, customers must install it on the same machine as the Gateway.


So when integrating with 10g OAM server, you actually need both ASDK 10g and 11g installed on the same machine as the API Gateway.

The 11g class files are missing and should be configured with a local OAM 11g SDK installation.

Example of an OAM 11g SDK installed at /apps/AccessServerSDK_11g.

Place "jvm.xml" under your "apigateway/conf/" adjust "ASDK_HOME" to point to your installation

jvm.xml:
=======
<ConfigurationFragment>
<!-- OAM ASDK Settings -->
<Environment name="ASDK_HOME" value="/apps/AccessServerSDK_11g" />
<ClassDir name="$ASDK_HOME" />
<VMArg name="-Doracle.security.jps.config=$ASDK_HOME/config/jps-config.xml"/>
</ConfigurationFragment>

In the OAM filters you point OAM ASDK directory to the 10g version and set Compatibility mode to 10g.

The 11g Java ASDK that we use can work with either 10g or 11g servers.