2017-03-03 50 views
0

以下内容连接到MongoDB的当是的doGet代码的servlet:Tomcat服务器不能试图通过一个Servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub  
    String message = "Hello World"; 
    request.setAttribute("message", message); // This will be available as ${message} 
    request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response); 

    /*response.getWriter().println("<h2>Hello friend!</h2>"); 
} 

当运行Tomcat服务器,其在执行上面的代码。

但是当我使用mongodb数据库时不行。新的代码不运行的服务器如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    MongoClient mongo = new MongoClient("localhost", 27017); 

    /**** Get database ****/ 
    // if database doesn't exists, MongoDB will create it for you 
    DB db = mongo.getDB("testdb"); 

    /**** Get collection/table from 'testdb' ****/ 
    // if collection doesn't exists, MongoDB will create it for you 
    DBCollection table = db.getCollection("user"); 

    /**** Insert ****/ 
    // create a document to store key and value 
    BasicDBObject document = new BasicDBObject(); 
    document.put("name", "mkyong"); 
    document.put("age", 30); 
    document.put("createdDate", new Date()); 
    table.insert(document); 

    /**** Find and display ****/ 
    BasicDBObject searchQuery = new BasicDBObject(); 
    searchQuery.put("name", "mkyong"); 

    DBCursor cursor = table.find(searchQuery); 

    while (cursor.hasNext()) { 
     System.out.println(cursor.next()); 
    } 


    String message = "Hello World"; 
    request.setAttribute("message", message); // This will be available as ${message} 
    request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response); 

    /*response.getWriter().println("<h2>Hello friend!</h2>");*/ 



} 

产生错误: 在本地主机服务器的Tomcat V7.0服务器无法启动。

这是为什么?

完整的控制台输出:

Mar 03, 2017 3:18:12 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyFirstServlet' did not find a matching property. 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/7.0.75 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Jan 18 2017 20:54:42 UTC 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   7.0.75.0 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 7 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   6.1 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   x86 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Java Home:    C:\Program Files (x86)\Java\jre1.8.0_121 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.8.0_121-b13 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   D:\eclipse-workspace-j\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.base=D:\eclipse-workspace-j\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dwtp.deploy=D:\eclipse-workspace-j\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\endorsed 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
Mar 03, 2017 3:18:12 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre1.8.0_121\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre1.8.0_121/bin/client;C:/Program Files (x86)/Java/jre1.8.0_121/bin;C:/Program Files (x86)/Java/jre1.8.0_121/lib/i386;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\MATLAB\R2013a\runtime\win64;C:\Program Files\MATLAB\R2013a\bin;C:\Program Files (x86)\Skype\Phone\;C:\eclipse;;. 
Mar 03, 2017 3:18:12 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Mar 03, 2017 3:18:12 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 526 ms 
Mar 03, 2017 3:18:12 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Mar 03, 2017 3:18:12 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.75 
Mar 03, 2017 3:18:12 PM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/MyFirstServlet]] 
    at java.util.concurrent.FutureTask.report(Unknown Source) 
    at java.util.concurrent.FutureTask.get(Unknown Source) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/MyFirstServlet]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) 
    ... 6 more 
Caused by: java.lang.NoClassDefFoundError: com/mongodb/DBObject 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Unknown Source) 
    at java.lang.Class.getDeclaredFields(Unknown Source) 
    at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) 
    at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139) 
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65) 
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:417) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:891) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5522) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    ... 6 more 
Caused by: java.lang.ClassNotFoundException: com.mongodb.DBObject 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) 
    ... 20 more 

Mar 03, 2017 3:18:12 PM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at java.util.concurrent.FutureTask.report(Unknown Source) 
    at java.util.concurrent.FutureTask.get(Unknown Source) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:758) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:693) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1127) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    ... 6 more 

Mar 03, 2017 3:18:12 PM org.apache.catalina.startup.Catalina start 
SEVERE: The required Server component failed to start so Tomcat is unable to start. 
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:693) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) 
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:758) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    ... 7 more 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) 
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    ... 9 more 
Caused by: org.apache.catalina.LifecycleException: A child container failed during start 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1127) 
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    ... 11 more 

Mar 03, 2017 3:18:12 PM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["http-bio-8080"] 
Mar 03, 2017 3:18:12 PM org.apache.coyote.AbstractProtocol pause 
INFO: Pausing ProtocolHandler ["ajp-bio-8009"] 
Mar 03, 2017 3:18:12 PM org.apache.catalina.core.StandardService stopInternal 
INFO: Stopping service Catalina 
Mar 03, 2017 3:18:12 PM org.apache.coyote.AbstractProtocol destroy 
INFO: Destroying ProtocolHandler ["http-bio-8080"] 
Mar 03, 2017 3:18:12 PM org.apache.coyote.AbstractProtocol destroy 
INFO: Destroying ProtocolHandler ["ajp-bio-8009"] 
+1

你能后的有完整的堆栈跟踪错误吗? – Veeram

+0

看起来像tomcat无法找到mongodb DBObject类。请确保mongo java驱动程序jar在类路径中可用 – Veeram

+0

我已经将jar文件mongo-java-driver-2.12.3添加到构建路径 - >库 – Karthikeyan

回答

2

它看起来像你的MongoDB库在库中缺少

java.lang.ClassNotFoundException 

这意味着Java找不到类加载

+0

我已经将mongo-java-driver-2.12.3 jar文件添加到项目构建路径库中。 – Karthikeyan

+0

试着把它放在你的'WEB-INF/lib /'中,这样tomcat就知道加载它了 – zack6849