[
https://jira.jboss.org/browse/TEIID-1324?page=com.atlassian.jira.plugin.s...
]
Ramesh Reddy commented on TEIID-1324:
-------------------------------------
Whether same or different JBoss AS instance does not matter. You are saying then that the
JOPR and JON class loading mechanism is different. So, the method
"getAdditionalClasspathUrls" needs to be overloaded with the this
jboss-reflect.jar. It is a bug that to not to include in JBoss AS plugin, because
jboss-metatype.jar depends on jboss-reflect.jar. More over these should be in the core
classpath that JON creates, there is no reason each individual plugin needs to create
their own classloader when these are core libraries.
Otherwise, you need replace all your uses of "MetaValueFactory.getInstance()"
with "SimpleValueSupport.warp(...)" class or similar, thus not using the
jboss-reflect.jar to begin with. I suspect, that is what JBoss As plugin did not
encountered this issue before.
Deploy JOPR Plugin on JON/RHQ
-----------------------------
Key: TEIID-1324
URL:
https://jira.jboss.org/browse/TEIID-1324
Project: Teiid
Issue Type: Bug
Components: Jopr Plugin
Affects Versions: 7.1
Environment: Jboss EAP 5.1, JON 2.4, jon-plugin-pack-eap-2.4.0.GA
Reporter: Cristiano Nicolai
Assignee: Ted Jones
Fix For: 7.1.1
When deploying Teiid JOPR plugin on JON, when the agent try to run the plugin there are
some missing classes.
Caused by: java.lang.NoClassDefFoundError: org/jboss/reflect/spi/TypeInfo
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at
org.jboss.metatype.plugins.values.MetaValueFactoryBuilder$1.run(MetaValueFactoryBuilder.java:71)
at
org.jboss.metatype.plugins.values.MetaValueFactoryBuilder$1.run(MetaValueFactoryBuilder.java:46)
at java.security.AccessController.doPrivileged(Native Method)
at
org.jboss.metatype.plugins.values.MetaValueFactoryBuilder.<clinit>(MetaValueFactoryBuilder.java:45)
at
org.jboss.metatype.api.values.MetaValueFactory.<clinit>(MetaValueFactory.java:41)
at org.teiid.rhq.admin.DQPManagementView.<clinit>(DQPManagementView.java:68)
at org.teiid.rhq.plugin.VDBComponent.getAvailability(VDBComponent.java:139)
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.rhq.core.pc.inventory.ResourceContainer$ComponentInvocationThread.call(ResourceContainer.java:525)
... 5 more
Basically the missing jar is jboss-metatype.jar.
I tried some classloader configuration including the missing jar in
teiid-console-7.2.0.Beta1.jar/lib, but as it has dependent classes (jboss-managed.jar)
that are loaded in jboss-as-5 RHQ plugin I couldn't find any solution without changing
the jboss-as-5 code. Probably some sync with RHQ guys is needed because jboss-managed.jar
depends on jboss-metatype.jar.
My workaround for this was a code change in ApplicationServerDiscoveryComponent to
include the required jar from the AS installation.
private static final List<String> CLIENT_JARS = Arrays.asList(
// NOTE: The jbossall-client.jar aggregates a whole bunch of other jars from the
client dir via its
// MANIFEST.MF Class-Path.
"client/jbossall-client.jar",
"client/trove.jar",
"client/javassist.jar",
"common/lib/jboss-security-aspects.jar",
"lib/jboss-managed.jar",
"lib/jboss-metatype.jar",
"lib/jboss-reflect.jar",
"lib/jboss-dependency.jar"
);
Fixing this class dependency the plugin start to require some Teiid client classes and to
solve this I just copy the teiid-7.2.0.Beta1-client.jar to
teiid-console-7.2.0.Beta1.jar/lib and redeploy the plugin.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira