发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

请问如何用JMX控制Servlet(非Servlet容器)。附出错程序,谢谢

2005-09-06 08:51
赞助商链接

想用JMX控制具体的Tomcat Servlet,而不是像一般讨论的控制Servlet容器。
首先实现Servlet
public class TestServlet extends HttpServlet implements TestBean{
public int getCount(){
return count;
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
......
}
}

TestBean如下定义:
public interface TestBean {
public int getCount();
}

Server类实现具体控制(目前仅为读取属性值)
public class Server {

public static void main(String[] args) {
......
mbs.createMBean("TestServlet", mbeanObjectName);
......
}
}
但是,执行时候出错:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/Ht
tpServlet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport.loadClass(Unknow
n Source)
at com.sun.jmx.mbeanserver.ClassLoaderRepositorySupport.loadClass(Unknow
n Source)
at com.sun.jmx.mbeanserver.MBeanInstantiatorImpl.findClassWithDefaultLoa
derRepository(Unknown Source)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(Unk
nown Source)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(Unk
nown Source)
at com.sun.jmx.mbeanserver.JmxMBeanServer.createMBean(Unknown Source)
at Server.createTestMBean(Server.java:83)
at Server.main(Server.java:36)

程序流程上是一定没有错的,因为CreateMBean的参数换成别的类名,可以正确执行。而Servlet-api.jar也明明包进来了,想请问是不是和TestServlet继承了Servlet有关呢?又该如何修改呢?谢谢:)

2005-09-12 10:37

是classloader问题。

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com