[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[glassfish-dev] Need help - About MethodHandles.defineClass Behavior
|
- From: "sawamura.hiroki@xxxxxxxxxxx" <sawamura.hiroki@xxxxxxxxxxx>
- Date: Wed, 18 Mar 2020 01:13:58 +0000
- Accept-language: ja-JP, en-US
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xWYcEHErnc3u3lHNNNLtqzKCmitO0M2p9P99pGHnwqM=; b=A5tPfdpMlsHFGSdJr9SfdJbroaYG+chGrtKbs5ytpS4Jto/PiL/MUEW8nleGHobvN+hUqkn02UhZNNrSUGCpQMIEvVRq0m0dreSgu7QlxFE2lBsEYIxr8frxl9PljYqPih3lG0RtVx4jxtFBb66RKOTqjXn6LkJoiWK7eCQy3xs7vlRE0Ibc7DAorjf0TyJ/bJ0opUodBeLkVBMg2qKOY18u+OESzeJJ/K2QRMw5KUbC21z6hsY4lDY6ZhKJy1NzRJCC/hOBoq4X/PuskP4bu7Sl9djhjAy/mXuTURIxU+NrHeg730KA1uaCNYXoNMzutUfUMcHAu/T/7Q5Vb9AkUQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EpxppQExS1zLcdK5IBBf6Nx2of76I8hnwgzaU3Kjz+59H8fed1/VMhQRzQBl1dH+XbsZxuDBEBRkLf5/QJiK4zc420+lPjo7oWeN5R+UkFufGsv+Uz7inHzII9wyWgQB2E+7kw+GcciBxbwDp1wq92fEST5FkHE7AXJqfe0NQiqe1rMonbdoNs1QbYJQFeb9aNkuXxfD+BgqkJcXnjvbjRx/zjoAbqUwYaZuqldgIC5IJWjPpyy9euywk2/2oEZ4O8p9hb8RSU66tnNp49dGdEdUQ4iS35SRTxQ4RszJr4AbRz2Ij5s/aX/s7oXSzhDFGTeqR7Md+RKuHyFgc36wwg==
- Delivered-to: glassfish-dev@xxxxxxxxxxx
- Ironport-sdr: SF8SvJ5/QHLnnMWXaKc0X5t9raPZblfYcmjpi26fuDW2+1Q2iEfZ+9wLpQ83Koe4Y5f8FjLrv2 0M45uUam8MQ0w5AuLAm0b2yZ+3TJ8eMOqB3fbbD3P3/9YiJkqe7pUd7FVGentjh+BaVL16HTim WFVzay4y4oQLfTJSR2Ele7Le05Ci610nVzHNCosIcuQVM8u8F1Xj7F+pyUTtBMcslDHRO1fRrI G5otOZPv8W7sqIo47cVABphcgSh6YTl14L5AmH4+O7WA9Tl+H3r9dZQ6WZgYI8/s0Sn2cKWX5M mng=
- List-archive: <https://www.eclipse.org/mailman/private/glassfish-dev>
- List-help: <mailto:glassfish-dev-request@eclipse.org?subject=help>
- List-subscribe: <https://www.eclipse.org/mailman/listinfo/glassfish-dev>, <mailto:glassfish-dev-request@eclipse.org?subject=subscribe>
- List-unsubscribe: <https://www.eclipse.org/mailman/options/glassfish-dev>, <mailto:glassfish-dev-request@eclipse.org?subject=unsubscribe>
- Thread-index: AdX8wWZHe/LhvleyRM+k84Q5xJqCOQ==
- Thread-topic: Need help - About MethodHandles.defineClass Behavior
Hi,
I'm trying to get devtests to run on JDK 11, but I'm having trouble with the following issues.
And now I'm looking for a hint or a clue to a solution... Does anyone have any idea?
■summary
As part of JDK 11 support, the process of orb-gmbal-pfl defineClass(*) has changed.
And when running devtests of glassfish on JDK 11, this method produces the following error:.
```
[2020-03-16T13:13:01.042+0900] [glassfish 5.1] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=45 _ThreadName=admin-listener(1)] [timeMillis: 1584331981042] [levelValue: 1000] [[
Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
java.lang.RuntimeException: EJB Container initialization error
(snip)
Caused by: java.lang.IllegalArgumentException: Class not in same package as lookup class
at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:955)
at org.glassfish.pfl.basic.reflection.Bridge.defineClass(Bridge.java:148)
(snip)
```
However, when I checked the arguments, the classBytes being defined is the same package as the existing class anchorClass.
This error occurs when deploying glassfish/lib/install/applications/mejb.jar, not when deploying a simple EJB app.
(*) orb-gmbal-pfl:/pfl-basic/src/main/java11/org/glassfish/pfl/basic/reflection/Bridge.java
https://github.com/eclipse-ee4j/orb-gmbal-pfl/pull/22
```
@Override
public Class<?> defineClass(Class<?> anchorClass, String className, byte[] classBytes) {
try {
MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(anchorClass, MethodHandles.lookup())
.dropLookupMode(MethodHandles.Lookup.PRIVATE);
return lookup.defineClass(classBytes);
} catch (IllegalAccessException e) {
throw new RuntimeException("Unable to define class ", e);
}
}
```
■when
running devtests (5.1.0-run-with-JDK11 branch):
- ejb_group_3
- cdi_all
(more specific) asadmin deploy glassfish/lib/install/applications/mejb.jar
■arguments when this error occurs
anchorClass:
anchorClass.toGenericString() -> "public abstract static interface com.sun.corba.ee.impl.folb.InitialGroupInfoService$InitialGIS"
className:
"com.sun.corba.ee.impl.folb.InitialGroupInfoService$_InitialGIS_DynamicStub"
classBytes:
```
# javap classBytes.class
Compiled from "com/sun/corba/ee/impl/folb/InitialGroupInfoService$_InitialGIS_DynamicStub.java"
public class com.sun.corba.ee.impl.folb.InitialGroupInfoService$_InitialGIS_DynamicStub extends com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase implements com.sun.corba.ee.impl.folb.InitialGroupInfoService$InitialGIS {
public com.sun.corba.ee.impl.folb.InitialGroupInfoService$_InitialGIS_DynamicStub();
public java.util.List getClusterInstanceInfo();
}
```
■Stacktrace(server.log)
```
[2020-03-16T13:13:01.041+0900] [glassfish 5.1] [SEVERE] [] [javax.enterprise.resource.corba] [tid: _ThreadID=45 _ThreadName=admin-listener(1)] [timeMillis: 1584331981041] [levelValue: 1000] [[
iiop.createreference_exception]]
[2020-03-16T13:13:01.042+0900] [glassfish 5.1] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=45 _ThreadName=admin-listener(1)] [timeMillis: 1584331981042] [levelValue: 1000] [[
Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
java.lang.RuntimeException: EJB Container initialization error
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:210)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:267)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:75)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:182)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:289)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:472)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:195)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:467)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:516)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:512)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:511)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:542)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:534)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/javax.security.auth.Subject.doAs(Subject.java:361)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:533)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1441)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:86)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1823)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1699)
at org.glassfish.admin.rest.resources.admin.CommandResource.executeCommand(CommandResource.java:384)
at org.glassfish.admin.rest.resources.admin.CommandResource.execCommandSimpInMultOut(CommandResource.java:211)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:679)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:353)
at org.glassfish.admin.rest.adapter.JerseyContainerCommandService$3.service(JerseyContainerCommandService.java:150)
at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:155)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:439)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:144)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:515)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.RuntimeException: Unable to create reference
at org.glassfish.enterprise.iiop.impl.POARemoteReferenceFactory.createRef(POARemoteReferenceFactory.java:398)
at org.glassfish.enterprise.iiop.impl.POARemoteReferenceFactory.createHomeReference(POARemoteReferenceFactory.java:351)
at com.sun.ejb.containers.BaseContainer.initializeHome(BaseContainer.java:1306)
at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:166)
at com.sun.ejb.containers.StatelessContainerFactory.createContainer(StatelessContainerFactory.java:39)
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:198)
... 66 more
Caused by: java.lang.IllegalArgumentException: Class not in same package as lookup class
at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:955)
at org.glassfish.pfl.basic.reflection.Bridge.defineClass(Bridge.java:148)
at org.glassfish.pfl.dynamic.codegen.impl.CodeGeneratorUtil.makeClass(CodeGeneratorUtil.java:57)
at org.glassfish.pfl.dynamic.codegen.spi.Wrapper._generate(Wrapper.java:1069)
at org.glassfish.pfl.dynamic.codegen.spi.Wrapper._generate(Wrapper.java:1040)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenProxyCreator.create(CodegenProxyCreator.java:217)
at com.sun.corba.ee.impl.presentation.rmi.codegen.StubFactoryCodegenImpl.createStubClass(StubFactoryCodegenImpl.java:71)
at com.sun.corba.ee.impl.presentation.rmi.codegen.StubFactoryCodegenImpl.createStubClass(StubFactoryCodegenImpl.java:65)
at com.sun.corba.ee.impl.presentation.rmi.codegen.StubFactoryCodegenImpl.lambda$getStubClass$0(StubFactoryCodegenImpl.java:48)
at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1133)
at com.sun.corba.ee.impl.presentation.rmi.codegen.StubFactoryCodegenImpl.getStubClass(StubFactoryCodegenImpl.java:48)
at com.sun.corba.ee.impl.presentation.rmi.codegen.StubFactoryCodegenImpl.makeStub(StubFactoryCodegenImpl.java:75)
at org.glassfish.enterprise.iiop.impl.POARemoteReferenceFactory.createRef(POARemoteReferenceFactory.java:388)
... 71 more
]]
```
Thanks,
Hiroki