I am getting a NullPointerException from
PersistenceUnitInfoImpl$PersistenceClassFileTransformer.transform() when
running in Java 8.

I have a command line application using openejb-core-4.7.2 and running in
Java 8, so when starting the app it runs using the javaagent
openejb-javaagent.jar.

This app uses JPA, but also has some legacy code that gets jdbc connections
using a BasicDataSource. 
Now whenever it gets a jdbc connection the javaagent seems to be doing some
manipulations of the byte code and a NullPointerException is thrown from
org.apache.openejb.persistence.PersistenceUnitInfoImpl from the method
PersistenceClassFileTransformer.transform at the line that reads 'String
replace = className.replace('/', '.');'. So className appears to be null.

This is the method where the exception comes from
public byte[] transform(ClassLoader classLoader, String className, Class<?>
classBeingRedefined, ProtectionDomain protectionDomain, byte[]
classfileBuffer) throws IllegalClassFormatException {
            String replace = className.replace('/', '.');
            return
PersistenceUnitInfoImpl.isServerClass(replace)?classfileBuffer:this.classTransformer.transform(classLoader,
replace, classBeingRedefined, protectionDomain, classfileBuffer);
        }

When running this same app in Java 7 no exceptions are thrown.

This is the stack trace:

java.lang.NullPointerException
        at
org.apache.openejb.persistence.PersistenceUnitInfoImpl$PersistenceClassFileTransformer.transform(PersistenceUnitInfoImpl.java:358)
        at
org.apache.openejb.persistence.PersistenceBootstrap$Transformer.transform(PersistenceBootstrap.java:429)
        at 
sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at
sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
        at sun.misc.Unsafe.defineAnonymousClass(Native Method)
        at
java.lang.invoke.InvokerBytecodeGenerator.loadAndInitializeInvokerClass(InvokerBytecodeGenerator.java:284)
        at
java.lang.invoke.InvokerBytecodeGenerator.loadMethod(InvokerBytecodeGenerator.java:276)
        at
java.lang.invoke.InvokerBytecodeGenerator.generateCustomizedCode(InvokerBytecodeGenerator.java:618)
        at java.lang.invoke.LambdaForm.compileToBytecode(LambdaForm.java:654)
        at
java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:247)
        at
java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:187)
        at
java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:176)
        at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:83)
        at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:103)
        at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:108)
        at 
java.lang.invoke.LambdaForm$NamedFunction.resolve(LambdaForm.java:1078)
        at
java.lang.invoke.DirectMethodHandle$Lazy.<clinit>(DirectMethodHandle.java:688)
        at
java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:231)
        at
java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:187)
        at
java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:176)
        at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:83)
        at
java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(MethodHandles.java:1656)
        at
java.lang.invoke.MethodHandles$Lookup.getDirectMethod(MethodHandles.java:1601)
        at 
java.lang.invoke.MethodHandles$Lookup.findStatic(MethodHandles.java:778)
        at
java.lang.invoke.BoundMethodHandle$Factory.makeCbmhCtor(BoundMethodHandle.java:817)
        at
java.lang.invoke.BoundMethodHandle$Factory.makeCtors(BoundMethodHandle.java:772)
        at
java.lang.invoke.BoundMethodHandle$SpeciesData.initForBootstrap(BoundMethodHandle.java:358)
        at
java.lang.invoke.BoundMethodHandle$SpeciesData.<clinit>(BoundMethodHandle.java:447)
        at 
java.lang.invoke.BoundMethodHandle.<clinit>(BoundMethodHandle.java:829)
        at java.lang.invoke.LambdaForm.createIdentityForms(LambdaForm.java:1778)
        at java.lang.invoke.LambdaForm.<clinit>(LambdaForm.java:1833)
        at
java.lang.invoke.DirectMethodHandle.makePreparedLambdaForm(DirectMethodHandle.java:222)
        at
java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:187)
        at
java.lang.invoke.DirectMethodHandle.preparedLambdaForm(DirectMethodHandle.java:176)
        at java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:83)
        at
java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(MethodHandles.java:1656)
        at
java.lang.invoke.MethodHandles$Lookup.getDirectMethodNoSecurityManager(MethodHandles.java:1613)
        at
java.lang.invoke.MethodHandles$Lookup.getDirectMethodForConstant(MethodHandles.java:1798)
        at
java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1747)
        at
java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:477)
        at
sun.security.util.AbstractAlgorithmConstraints.loadAlgorithmsMap(AbstractAlgorithmConstraints.java:50)
        at
sun.security.util.AbstractAlgorithmConstraints.getAlgorithms(AbstractAlgorithmConstraints.java:79)
        at
sun.security.util.DisabledAlgorithmConstraints.<init>(DisabledAlgorithmConstraints.java:77)
        at
sun.security.ssl.SSLAlgorithmConstraints.<clinit>(SSLAlgorithmConstraints.java:50)
        at sun.security.ssl.ProtocolVersion.<clinit>(ProtocolVersion.java:114)
        at
sun.security.ssl.SSLContextImpl$AbstractSSLContext.<clinit>(SSLContextImpl.java:453)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at java.security.Provider$Service.getImplClass(Provider.java:1634)
        at java.security.Provider$Service.newInstance(Provider.java:1592)
        at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
        at sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
        at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156)
        at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1590)
        at
com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323)
        at
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
        at
com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
        at
com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
        at
org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
        at
org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
        at
org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
        at
org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
        at
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
        at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)




--
View this message in context: 
http://tomee-openejb.979440.n4.nabble.com/NullPointer-from-PersistenceUnitInfoImpl-when-running-in-Java-8-tp4676755.html
Sent from the TomEE Dev mailing list archive at Nabble.com.

Reply via email to