我试图让proxool的MBeans可用,以便我可以使用jconsole查看/操作它们。 我有jconsole工作,但我没有看到与proxool有关的任何东西。
该系统正在使用Sun Java 1.5.0_17(我知道,我知道…我正在与开发人员进行升级)。 通过在我的tomcat 5.5启动脚本中修改$ JAVA_OPTS来启用JMX:
SJO="$SJO -Dcom.sun.management.jmxremote" SJO="$SJO -Dcom.sun.management.jmxremote.port=4998" SJO="$SJO -Dcom.sun.management.jmxremote.authenticate=false" SJO="$SJO -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS $SJO"
我在server.xml中使用JNDIconfiguration了proxool:
<GlobalNamingResources> <Resource name="jdbc/database" auth="Container" type="javax.sql.DataSource" factory="org.logicalcobwebs.proxool.ProxoolDataSource" user="username" password="password" proxool.driver-url="jdbc:oracle:thin:@fqdn.example.com:1521:MYSID" proxool.driver-class="oracle.jdbc.driver.OracleDriver" proxool.alias="mysid" proxool.maximum-connection-count="20" proxool.statistics="20s,5m,15m" proxool.statistics-log-level="INFO" proxool.jmx="true" proxool.verbose="true" /> </GlobalNamingResources>
我的testing.jsp可以运行查询,我可以使用与proxoolpipe理servlet的连接来查看它,但是我不确定是否还有更多需要在tomcat或proxool中configuration以获取JMX的function。
build议吗?
jmxproxy信息编辑:
jmxproxy servlet正在工作 – 当我访问URL http://tomcatserver.example.com:4999/manager/jmxproxy/?qry=*:type%3DRequestProcessor,* ,结果是:
OK - Number of results: 2 Name: Catalina:type=RequestProcessor,worker=http-8080,name=HttpRequest0 modelerType: org.apache.coyote.RequestInfo bytesSent: 0 requestBytesSent: 0 contentLength: -1 bytesReceived: 0 requestProcessingTime: 1297983483666 globalProcessor: org.apache.coyote.RequestGroupInfo@32dc51c8 requestBytesReceived: 0 serverPort: -1 stage: 0 requestCount: 0 maxTime: 0 processingTime: 0 errorCount: 0 Name: Catalina:type=RequestProcessor,worker=jk-127.0.0.1-8009,name=JkRequest794 modelerType: org.apache.coyote.RequestInfo virtualHost: tomcatserver.example.com bytesSent: 0 method: GET remoteAddr: 172.30.3.51 requestBytesSent: 0 contentLength: -1 workerThreadName: TP-Processor15 bytesReceived: 0 requestProcessingTime: 9 globalProcessor: org.apache.coyote.RequestGroupInfo@1e7d3b8e protocol: HTTP/1.1 currentQueryString: qry=*%3Atype%3DRequestProcessor%2C* requestBytesReceived: 0 serverPort: 4999 stage: 3 requestCount: 0 maxTime: 0 processingTime: 0 currentUri: /manager/jmxproxy/ errorCount: 0
更多的点http://tomcatserver.example.com:4999/manager/jmxproxy/?qry=Catalina:type%3DEnvironment,resourcetype%3DGlobal,name%3DProxool产量:
OK - Number of results: 0
解决 – 这是一个类加载问题。 在今天再次查看日志时,我在重新启动tomcat时看到了这一点:
Feb 22, 2011 11:47:40 AM org.apache.catalina.core.NamingContextListener addResource WARNING: Failed to register in JMX: javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.logicalcobwebs.proxool.ProxoolDataSource]
我相信自从我使用GlobalNamingResources以来,我需要将数据库驱动程序的proxool和jar移到“common”类加载器,而不是“shared”或per-webapp库目录(请参阅Class Loader HOW-TO )。 将.jar文件重定位到common.loader中的目录后,proxool的JMX界面开始工作。 为了引用,MBean在Catalina > DataSource