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

Опитах се да се свържа с mongodb чрез Java, използвайки спокойни услуги. Имам много изключения. Използвам Websphere Application server 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
Добавихте ли MongoDB java драйвер в пътя на класа на websphere?   -  person harshavmb    schedule 20.12.2015
comment
да, построих баня за водача, това е снимка на екрана.   -  person ahmed    schedule 20.12.2015


Отговори (3)


това е изображение на моето работно пространство

когато използвах да се свържа с mongoDB от просто приложение на Java, то се свърза нормално, но тези изключения излязоха, когато се опитах да се свържа от Dynamic Web Project

person ahmed    schedule 20.12.2015

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

За да добавите jar към динамичен уеб проект, за да го внедрите в WebSphere, трябва да го добавите към динамичния уеб проект, като използвате една от следните стъпки:

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

Надявам се това да помогне

person UliL    schedule 20.12.2015

Вижте Създаване на приложения на Liberty, които използват MongoDB в центъра за знания на IBM.

Като за начало се казва да добавите mongodb -2.0 функция към вашата конфигурация на Liberty.

„Liberty profile предоставя функция mongodb-2.0, която можете да използвате, за да конфигурирате MongoDB екземпляри и свързани връзки към бази данни за вашите приложения. Достъпът до MongoDB връзки е достъпен или чрез търсене на Java Naming and Directory Interface (JNDI) или инжектиране на ресурс, както при други продукти ресурси. Цялата действителна манипулация на базата данни се извършва от собствения API на com.mongodb."

person James Stansell    schedule 22.12.2015