那就是Jboss并未加载这个class,或者并没有在程序运行时调用这个class, 确定一下JBoss在哪个目录调你的servlet的class,xml的映射是否正确

解决方案 »

  1.   

    default中,web.xml中设置的都正确,servlet都能正常工作,只不过是在servlet中又添加了一条打印语句,发布后没有起作用.
      

  2.   

    我觉得应该是你哪里粗心大意了,会不会是你机器上有俩jboss,更新了这个里的servlet,运行的却还是另一个jboss呢^_^。
      

  3.   

    to bestdelphier:
    我检查了,应该不会的
      

  4.   

    以前碰到过类似的情况。建议你:
    1.删掉你认为是最新版本的你编译过的类;
    2.重启JBOSS,然后再运行你的程序;
    3.如果还能运行,说明你最新编译过得类放的位置不对,你要仔细找找是不是什么地方还有这个类的旧版本,然后把这些旧的类删掉,再换成你新编译过的;
    4.重启JBOSS应该就行了
      

  5.   

    折腾了好几天,刚刚忽然茅塞顿开,终于解决问题了,那我也把原因说一下.
    因为项目中建立了三个EJB Module,一个Web Module.我用的工具(eclipse+lomboz)会将所有的类都拷到每个Module中.而JBoss可能会先Load那些先发布的Module里的Class,而后发布的Module里的相同的Class就不会被Load(我不是很清楚里面的机制,最好有人能解释一下它的机制,这跟weblogic好象不同,我在weblogic上发布时从没遇到过这种问题).当更改一个servlet时,我只发布了Web应用.而更改后的servlet就不会被Load了,所以在Web container中的永远是老的servlet,所以就没有起作用.
      

  6.   

    有谁能谈一下JBoss里的机制吗?明天节贴。
      

  7.   

    我觉得在weblogic中每个EJB Module会生成一个EJB ClassLoader的实例,只会Load本身jar文件中的class,每个EJB Module,和Web Module之间好象不会有干扰.而JBoss中好象不是这样,有谁能解释一下?