2013-07-14 30 views
0

我試圖以動態從外部文件中增加一個servlet(編譯.class文件)上運行tomcat7服務器動態地從外部文件中添加的servlet,Tomcat7

這裏是我的代碼

import javax.servlet.ServletContext; 
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 
import javax.servlet.ServletRegistration; 

import com.sun.org.apache.bcel.internal.util.ClassLoaderRepository; 



public class ConListenerImlp implements ServletContextListener{ 


    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 

    } 

    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     ServletContext context = arg0.getServletContext(); 
     final ServletRegistration.Dynamic dn=context.addServlet("test","C:\\Users\\Learning\\workspace\\Server\\build\\classes\\Test.class"); 
     dn.setAsyncSupported(true); 
     dn.addMapping("/test"); 



    } 


} 

我的呼喚servlet的 「測試」 我得到一個ClassNotFoundException

java.lang.ClassNotFoundException: C:\Users\Learning\workspace\Server\build\classes\Test.class 

任何幫助將是非常讚賞

+0

請閱讀[Javadoc](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#addServlet(java.lang.String,javax.servlet.Servlet))方法。它解決您的擔憂。 – NINCOMPOOP

回答

0

the javadoc

將具有給定名稱和類名這個servlet上下文中的servlet。

註冊的servlet可以通過返回的ServletRegistration對象進一步配置。

指定的className 將使用與此ServletContext表示的應用程序關聯的類加載器加載。

(重點煤礦)

這個方法只需要一個類名(類似於com.yourcompany.yourapp.TestServlet),而不是文件路徑。並且該類必須存在於webapp的類路徑中,即WEB-INF/classesWEB-INF/lib的其中一個罐子。

備註:你不應該把類放在默認包中。

+0

非常感謝,現在它正在運行 – Basil

相關問題