Hi

good catch, has been fixed upstream:
https://github.com/apache/tomee/blob/master/container/openejb-core/src/main/java/org/apache/openejb/persistence/PersistenceUnitInfoImpl.java#L363


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>

2015-11-09 16:49 GMT-08:00 chr...@rmt.com.au <chr...@rmt.com.au>:

> 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