It's likely that MongoDB needs another jar on the CP.

G


On Fri, Aug 16, 2013 at 6:48 PM, Nick Williams <
[email protected]> wrote:

> Guys, I'm having a hard time with this simple fix that should have taken
> five minutes. I'm getting test failures due to NoClassDefFoundErrors that
> shouldn't happen.
>
> Here are the tests in error:
>   CategoryTest.setupClass:52 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testTraceWithException:415 ? NoClassDefFound
> com/mongodb/MongoExcep...
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testLog:459 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testRB1:295 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testRB2:314 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testRB3:334 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testTrace:388 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testAdditivity1:119 ? NoClassDefFound
> com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testAdditivity2:144 ? NoClassDefFound
> com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testAdditivity3:183 ? NoClassDefFound
> com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testIsTraceEnabled:443 ? NoClassDefFound
> com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.testExists:355 ? NoClassDefFound com/mongodb/MongoException
>   LoggerTest.tearDown:75 ? NoClassDefFound com/mongodb/MongoException
>   LoggingTest.setupClass:44 ? NoClassDefFound com/mongodb/MongoException
>   LoggingTest.cleanupClass:49 NullPointer
>
> Here's the code I added:
>
>                 try {
>                     if (!database.authenticate(username,
> password.toCharArray())) {
>                         LOGGER.error("Failed to authenticate against
> MongoDB server. Unknown error.");
>                     }
>                 } catch (MongoException e) {
>                     LOGGER.error("Failed to authenticate against MongoDB:
> " + e.getMessage(), e);
>                 } catch (IllegalStateException e) {
>                     LOGGER.error("Factory-supplied MongoDB database
> connection already authenticated with different" +
>                             "credentials but lost connection.");
>                 }
>
> Problem is, "database" is an instance of com.mongodb.DB, which is in the
> same JAR as com.mongodb.MongoException. If I remove this code, the tests
> pass. How is this possible? The DB instance is there with or without this
> new code, which means the JAR is on the classpath, which means
> MongoException should be on the classpath.
>
> Very confused...
>
> Nick
>
> On Aug 16, 2013, at 5:13 PM, Gary Gregory wrote:
>
> Thank you for the update Nick!
> :)
> Gary
>
>
> On Fri, Aug 16, 2013 at 5:39 PM, Nick Williams <
> [email protected]> wrote:
>
>> Answers inline.
>>
>> On Aug 14, 2013, at 2:10 AM, YuCheng Ting wrote:
>>
>> Hi all,
>>
>> I use *beta8 *log4j2 and wrote log4j2.xml like example in document (
>> http://logging.apache.org/log4j/2.x/manual/appenders.html#NoSQLAppender):
>>
>>
>> *<appenders>
>>     <NoSql name="databaseAppender">
>>         <MongoDb databaseName="applicationDb"
>> collectionName="applicationLog"
>>             server="mongo.example.org"
>>             username="loggingUser" password="abc123" />
>>     </NoSql>
>> </appenders>*
>>
>>
>> Yep. That's correct.
>>
>> but I get the two exception:
>>
>> 1, "can't serialize class org.apache.logging.log4j.Level" exception in
>> (BasicBSONEncoder.java:270), I read the code and add follow code in my
>> project before logging, it gone.
>>
>>         *BSON.addEncodingHook(org.apache.logging.log4j.Level.class, new
>> Transformer() {
>>             @Override
>>             public Object transform(Object o) {
>>                 return o.toString();
>>             }
>>         });*
>>
>>
>> This bug was reported and fixed a few weeks ago. The fix will be in the
>> next version, or you can compile locally.
>> https://issues.apache.org/jira/browse/LOG4J2-330
>>
>> 2, “not authorized for insert test.log”, because my MongoDB need auth to
>> write, but the the "username" and "password" attributes in log4j2.xml is
>> nearly useless, after I read source code, found it *NOT auth* in
>>
>> *
>> org.apache.logging.log4j.core.appender.db.nosql.mongo.MongoDBProvider.createNoSQLProvider
>> *
>> source code line 181 after check username and password and *
>> com.mongodb.DB.authenticate* never be called.
>>
>>
>> This is a bug. I'm reporting it and fixing it now. The fix will be in the
>> next version, or you can compile locally (after I get the change committed,
>> of course).
>>
>> so I change log4j2.xml :
>> *
>> <NoSql name="mongodb">
>>              <MongoDb collectionName="log" databaseName="test"
>>                          factoryClassName="com.yuchs.test.log4j.MainTest"
>>                         factoryMethodName="getMongoClient" />
>> </NoSql>*
>>
>> and create MongoClient and call *com.mongodb.DB.authenticate* method in *
>> com.yuchs.test.log4j.MainTest.getMongoClient*.
>>
>>
>> *This is my question:*
>>
>> 1, Why not add BSON.addEncodingHook code into log4j2 project to avoid
>> basic exception ? or another rule of method I don't know ?
>>
>> 2, Why not auth DB in log4j2 project if password and username is set in
>> log4j2.xml ? or another rule of method I don't know ?
>>
>> Thanks everyone!
>>
>>
>>
>
>
> --
> E-Mail: [email protected] | [email protected]
> Java Persistence with Hibernate, Second 
> Edition<http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>
>
>


-- 
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to