Исключения при доступе к mongodb с использованием java

Я попытался подключиться к mongodb через Java, используя службы успокоения. У меня много исключений. Я использую сервер приложений websphere Liberty Profile.

Это мой код в классе Java

package com;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;


@Path("/helloworld")
public class HelloWorld {

    @GET
    public String sayHello(){   

        System.out.println("step 1 - try to create constructor of DB");

        System.out.println("1.1");

        MongoClient mongoClient = new MongoClient();
        System.out.println("1.2");

        MongoDatabase db = mongoClient.getDatabase("Sensors");
        System.out.println("1.3");

        return "Hello World";
    }
}

Это файл Web.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.1"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

    <display-name>RESTWeb</display-name>

    <servlet>
        <servlet-name>REST</servlet-name>
        <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.HelloWorldConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>REST</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>

Это вывод на консоль

[ERROR   ] Error occurred during error handling, give up!
com/mongodb/MongoClient
[ERROR   ] SRVE0777E: Exception thrown by application class 'org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage:116'
java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: com/mongodb/MongoClient
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
    at [internal classes]
Caused by: org.apache.cxf.interceptor.Fault: com/mongodb/MongoClient
    at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
    ... 1 more
Caused by: java.lang.NoClassDefFoundError: com/mongodb/MongoClient
    at com.HelloWorld.sayHello(HelloWorld.java:20)
    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 com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:607)
    ... 1 more

[ERROR   ] SRVE0315E: An exception occurred: java.lang.Throwable: java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: com/mongodb/MongoClient
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4900)
    at [internal classes]
Caused by: java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: com/mongodb/MongoClient
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
    ... 1 more
Caused by: org.apache.cxf.interceptor.Fault: com/mongodb/MongoClient
    at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
    ... 1 more
Caused by: java.lang.NoClassDefFoundError: com/mongodb/MongoClient
    at com.HelloWorld.sayHello(HelloWorld.java:20)
    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 com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:607)
    ... 1 more

person ahmed    schedule 20.12.2015    source источник
comment
Вы добавили Java-драйвер MongoDB в путь класса websphere?   -  person harshavmb    schedule 20.12.2015
comment
да, я построил ванну для водителя, это ее снимок экрана.   -  person ahmed    schedule 20.12.2015


Ответы (3)


это изображение моего рабочего места

когда я использовал для подключения к mongoDB из простого java-приложения, он подключался нормально, но это исключение отсутствовало, когда я пытался подключиться из динамического веб-проекта

person ahmed    schedule 20.12.2015

У вас есть mongo-java-driver-3.0.1.jar, добавленный в настройки Java Build вашего проекта. Добавление туда jar означает только то, что файлы классов будут найдены компилятором. Это НЕ означает, что файлы классов из JAR будут развернуты в WebSphere.

Чтобы добавить jar-файл в динамический веб-проект, чтобы развернуть его в WebSphere, вам необходимо добавить его в динамический веб-проект, выполнив один из следующих шагов:

  • Скопируйте файл jar в каталог WEB-INF / lib вашего веб-проекта.
  • Выберите динамический веб-проект> правая кнопка мыши> Сборка развертывания> Добавить> Выбрать файл JAR

надеюсь, это поможет

person UliL    schedule 20.12.2015

См. Создание приложений Liberty, использующих MongoDB, в центре знаний IBM.

Для начала предлагается добавить mongodb -2.0 функция к вашей конфигурации свободы.

«Профиль Liberty предоставляет функцию mongodb-2.0, которую можно использовать для настройки экземпляров MongoDB и связанных подключений к базе данных для ваших приложений. Доступ к подключениям MongoDB доступен либо с помощью поиска Java Naming and Directory Interface (JNDI), либо с помощью внедрения ресурсов, как и в других продуктах. ресурсы. Все фактические манипуляции с базой данных выполняются собственным API com.mongodb ".

person James Stansell    schedule 22.12.2015