-
Type:
Bug
-
Resolution: Cannot Reproduce
-
Priority:
Major - P3
-
None
-
Affects Version/s: 2.5.3
-
Component/s: Cluster Management
-
Environment:Window 7 SP1 32bit
Glassfish 3.1 + Spring 3.0.5 (Can be ignore it)
-
None
-
None
-
None
-
None
-
None
-
None
-
None
I had redeployed spring web application onto glassfish 3.1, I got endless NullPointerException at at com.mongodb.OutMessage.reset(OutMessage.java:73).
(you can also refer this page - http://groups.google.com/group/mongodb-user/browse_thread/thread/a51a1f5f3850ba46/74272391a3ee37ab?hl=en&lnk=gst&q=endless#74272391a3ee37ab )
Here is server log:
[#|2011-05-12T01:05:37.251+0900|SEVERE|glassfish3.1|com.mongodb.ReplicaSetS tatus|_ThreadID=27;_ThreadName=Thread-1;|unexpected
error getting config from node: localhost:10001
java.lang.NullPointerException
at com.mongodb.OutMessage.reset(OutMessage.java:73)
at com.mongodb.OutMessage.<init>(OutMessage.java:51)
at com.mongodb.OutMessage.query(OutMessage.java:38)
at com.mongodb.DBPort.findOne(DBPort.java:142)
at com.mongodb.ReplicaSetStatus$Node.update(ReplicaSetStatus.java:156)
at com.mongodb.ReplicaSetStatus.updateAll(ReplicaSetStatus.java:277)
at com.mongodb.ReplicaSetStatus$Updater.run(ReplicaSetStatus.java:238)
#] |
How to reproduce this issue:
1. deploy application to glassfish
2. redeploy same application to glassfish (or, drop the application from the glassfish)
3. you can get that exception endless
I inject MongoDB Connecter as spring bean.
<bean id="MongoConnector" class="jwdm.core.bean.MongoConnector"
p:host="localhost" p:port="10001">
Here is full code of MongoConnector (as Spring bean):
public class MongoConnector {
private Mongo mongoDB;
private String host;
private String port;
// Return an instance of Mongo
public Mongo getMongo() {
logger.debug("Retrieving MongoDB");
if (mongoDB == null) {
try
catch (UnknownHostException e)
{ logger.error(e.toString()); } catch (MongoException e) { logger.error(e.toString()); }
}
return mongoDB;
}
// Retrieve a db
public DB getDB(String dbname)
// Retrieve a collection
public DBCollection getCollection(String dbname, String collection)
... getter , setter ...
}
</bean>
Before using spring bean style, I was using static factory style without spring.
But it produces same exception.
Here is static factory style code:
public class MongoDBFactory {
protected static Logger logger = LoggerFactory.getLogger(MongoDBFactory.class);
private static Mongo mongoDB;
// Make sure no one can instantiate our factory
private MongoDBFactory() {
}
// Return an instance of Mongo
public static Mongo getMongo() {
logger.debug("Retrieving MongoDB");
if (mongoDB == null) {
try
catch (UnknownHostException e)
{ logger.error(e.toString()); } catch (MongoException e) { logger.error(e.toString()); }}
return mongoDB;
}
// Retrieve a db
public static DB getDB(String dbname)
// Retrieve a collection
public static DBCollection getCollection(String dbname, String collection)
}
Thank you for your helps,
Greg