@Chuck: Yes, I did kind of munge the bootstrap and System classloaders
together. But the problem still remains. When I remove weblogic.jar from
common/lib and my code attempts to establish a JMX connection using below:
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, h);

I get the following error stack:
java.net.MalformedURLException: Unsupported protocol: t3

javax.management.remote.JMXConnectorFactory.newJMXConnector(JMXConnectorFactory.java:327)

javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:247)

com.fedex.ground.scm.service.ControllerServiceImpl.initConnection(ControllerServiceImpl.java:105)

com.fedex.ground.scm.service.ControllerServiceImpl.retrieveAppDataForHost(ControllerServiceImpl.java:47)
        
com.fedex.ground.scm.ControllerBean.setSelectedHost(ControllerBean.java:75)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:597)
        org.apache.el.parser.AstValue.invoke(AstValue.java:172)
        org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:71)
        javax.faces.component.UICommand.broadcast(UICommand.java:377)

com.icesoft.faces.component.panelseries.UISeries$RowEvent.broadcast(UISeries.java:559)

com.icesoft.faces.component.panelseries.UISeries.broadcast(UISeries.java:238)
        javax.faces.component.UIData.broadcast(UIData.java:849)

com.icesoft.faces.component.panelseries.UISeries.broadcast(UISeries.java:233)
        javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:452)
        javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:764)

com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)

com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:17)

com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCyclePartial(ReceiveSendUpdates.java:64)

com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:40)

com.icesoft.faces.webapp.http.core.ViewBoundServer.service(ViewBoundServer.java:65)

com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:44)

com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer$Matcher.serviceOnMatch(PathDispatcherServer.java:50)

com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:19)

com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19)

com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)

com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:139)

com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)

com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)

com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)

com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:82)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:46)

t3 is a WLS proprietary protocol so I am assuming that JMXConnectorFactory
does not even get to the weblogic.jar class to pick up the JMX classes to
recognize the weblogic protocol.

So that is the symptom. If I can get the Weblogic.jar file out of the System
classpath (and into the WEB-INF/lib), I'm pretty sure, I can get the Jython
piece to work. 


@Martin: The wljmxclient.jar that you mentioned does not have the class
JMXConnector. And I'm not sure why jConsole is being used here.

Thanks!

Pankaj





Pankaj Tandon wrote:
> 
> Hi all,
> I am writing a webapp that uses JMX to manage weblogic and websphere
> servers and hosting it on Tomcat 6.0.18. The app also uses Jython to
> manipulate MBeans within the app servers.
> 
> Here's the issue that I'm facing:
> To get a JMX connection using JMXConnectionFactory using below:
> JMXConnector connector = JMXConnectorFactory.connect(serviceURL, h);
> I have to rely on classes in weblogic.jar
> That is because the implementation of JMXConnector is in weblogic.jar.
> However, the interface/abstract class for JMXConnectionFactory lives in
> rt.jar that comes with JDK1.5 or JDK1.6
> 
> Because rt.jar is (probably) used by the bootstrap classloader, I HAVE to
> include weblogic.jar in the CATALINA_HOME/common/lib directory. If I do
> so, I can get the JMX part of the solution to work because both, rt.jar
> and weblogic.jar are loaded by the same (system) classloader. 
> 
> But then my Jython classes do not work because jython.jar is tucked away
> in the webapp's WEB-INF/lib dir of the webapp and my Jython solution needs
> classes from weblogic.jar which is loaded by the system classloader and
> hence in a different namespace.
> I tried placing jython.jar in common/lib too, but that did not work
> because Jython needs classes from my webapp and I go down a slippery slope
> of chasing classes across classlaoders.
> 
> So the ideal solution would be to get weblogic.jar loaded from the webapp
> classloader. And not place anything in the CATALINA_HOME/common/lib
> directory.
> 
> How can I place weblogic.jar in the webapp classlaoder and have my JMX
> solution work, given that javax.management.remote.JMXConnectorFactory
> resides in rt.jar which is in the System classpath?
> 
> Any pointers will be appreciated!
> 
> Thanks a lot!
> 
> Pankaj
> 
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Using-JMX-with-Tomcat%3A-classloading-issues-tp24055767p24057930.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to