Olá este método funciona, mas o getDB está “deprecated” como atualizo?
Alguns falam para mudar para getDatabase, tentei mas não consegui
.
public class MongoDBPersonDAO {
private DBCollection col;
public MongoDBPersonDAO(MongoClient mongo) {
this.col = mongo.getDB("journaldev").getCollection("Persons");
//getDB("journaldev").getCollection("Persons"); //MongoClient.getDatabase
// mongo.getDatabase("journaldev").getCollection("Persons");
}
Servlet AddPersonServlet
public class AddPersonServlet extends HttpServlet {
private static final long serialVersionUID = -7060758261496829905L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String country = request.getParameter("country");
if ((name == null || name.equals(""))
|| (country == null || country.equals(""))) {
request.setAttribute("error", "Mandatory Parameters Missing");
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/persons.jsp");
rd.forward(request, response);
} else {
Person p = new Person();
p.setCountry(country);
p.setName(name);
MongoClient mongo = (MongoClient) request.getServletContext()
.getAttribute("MONGO_CLIENT");
MongoDBPersonDAO personDAO = new MongoDBPersonDAO(mongo);
personDAO.createPerson(p);
System.out.println("Person Added Successfully with id="+p.getId());
request.setAttribute("success", "Person Added Successfully");
List<Person> persons = personDAO.readAllPerson();
request.setAttribute("persons", persons);
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/persons.jsp");
rd.forward(request, response);
}
}
}
A própria documentação diz isso.
O que você não conseguiu?
1 curtida
public MongoDBPersonDAOnew(MongoClient mongo) {
//this.col = mongo.getDB("journaldev").getCollection("Persons");
MongoCollection<Document> collection = mongo.getDatabase("journaldev").getCollection("Persons");
//MongoCollection<Document> collection = new MongoClient().getDatabase("Database").getCollection("collection");
//DBCollection this.col = (DBCollection) mongo.getDatabase("Persons");
//MongoDatabase mydatabase = mongoClient.getDatabase("mydatabase");
}
public Person createPerson(Person p) {
DBObject doc = PersonConverter.toDBObject(p);
this.col.insert(doc);
ObjectId id = (ObjectId) doc.get("_id");
p.setId(id.toString());
return p;
}
public void updatePerson(Person p) {
DBObject query = BasicDBObjectBuilder.start()
.append("_id", new ObjectId(p.getId())).get();
this.col.update(query, PersonConverter.toDBObject(p));
}
public List<Person> readAllPerson() {
List<Person> data = new ArrayList<Person>();
DBCursor cursor = col.find();
while (cursor.hasNext()) {
DBObject doc = cursor.next();
Person p = PersonConverter.toPerson(doc);
data.add(p);
}
return data;
}
public void deletePerson(Person p) {
DBObject query = BasicDBObjectBuilder.start()
.append("_id", new ObjectId(p.getId())).get();
this.col.remove(query);
}
public Person readPerson(Person p) {
DBObject query = BasicDBObjectBuilder.start()
.append("_id", new ObjectId(p.getId())).get();
DBObject data = this.col.findOne(query);
return PersonConverter.toPerson(data);
}
}
e
@WebServlet("/addPersonnew")
public class AddPersonServletnew extends HttpServlet {
private static final long serialVersionUID = -7060758261496829905L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String country = request.getParameter("country");
if ((name == null || name.equals(""))
|| (country == null || country.equals(""))) {
request.setAttribute("error", "Mandatory Parameters Missing");
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/persons.jsp");
rd.forward(request, response);
} else {
Person p = new Person();
p.setCountry(country);
p.setName(name);
MongoClient mongo = (MongoClient) request.getServletContext()
.getAttribute("MONGO_CLIENT");
MongoDBPersonDAOnew personDAO = new MongoDBPersonDAOnew(mongo);
personDAO.createPerson(p);
System.out.println("Person Added Successfully with id="+p.getId());
request.setAttribute("success", "Person Added Successfully");
List<Person> persons = personDAO.readAllPerson();
request.setAttribute("persons", persons);
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/persons.jsp");
rd.forward(request, response);
}
}
}
console
Deu estes erros
HTTP Status 500 – Internal Server Error h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}
# HTTP Status 500 – Internal Server Error
**Type** Exception Report
**Description** The server encountered an unexpected condition that prevented it from fulfilling the request.
**Exception**
java.lang.NullPointerException dao.MongoDBPersonDAOnew.createPerson(MongoDBPersonDAOnew.java:40) servlets.AddPersonServletnew.doPost(AddPersonServletnew.java:40) javax.servlet.http.HttpServlet.service(HttpServlet.java:660) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
**Note** The full stack trace of the root cause is available in the server logs.
SEVERE: Servlet.service() for servlet [servlets.AddPersonServletnew] in context with path [/MongoDBWebapp] threw exception
java.lang.NullPointerException
at dao.MongoDBPersonDAOnew.createPerson(MongoDBPersonDAOnew.java:40)
at servlets.AddPersonServletnew.doPost(AddPersonServletnew.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:407)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Tá mas esse erro aí não é no getDatabase
é no seu método createPerson
, você está tentando manipular algo que está null
.
1 curtida
Como corrigiria?
o antigo era, ele funciona, mas getDB() deprecated
public class MongoDBPersonDAO {
private DBCollection col;
public MongoDBPersonDAO(MongoClient mongo) {
this.col = mongo.getDB("journaldev").getCollection("Persons");
}
public Person createPerson(Person p) {
DBObject doc = PersonConverter.toDBObject(p);
this.col.insert(doc);
ObjectId id = (ObjectId) doc.get("_id");
p.setId(id.toString());
return p;
}
public void updatePerson(Person p) {
DBObject query = BasicDBObjectBuilder.start()
.append("_id", new ObjectId(p.getId())).get();
this.col.update(query, PersonConverter.toDBObject(p));
}
public List<Person> readAllPerson() {
List<Person> data = new ArrayList<Person>();
DBCursor cursor = col.find();
while (cursor.hasNext()) {
DBObject doc = cursor.next();
Person p = PersonConverter.toPerson(doc);
data.add(p);
}
return data;
}
public void deletePerson(Person p) {
DBObject query = BasicDBObjectBuilder.start()
.append("_id", new ObjectId(p.getId())).get();
this.col.remove(query);
}
public Person readPerson(Person p) {
DBObject query = BasicDBObjectBuilder.start()
.append("_id", new ObjectId(p.getId())).get();
DBObject data = this.col.findOne(query);
return PersonConverter.toPerson(data);
}
}
e
@WebServlet("/addPerson")
public class AddPersonServlet extends HttpServlet {
private static final long serialVersionUID = -7060758261496829905L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String country = request.getParameter("country");
if ((name == null || name.equals(""))
|| (country == null || country.equals(""))) {
request.setAttribute("error", "Mandatory Parameters Missing");
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/persons.jsp");
rd.forward(request, response);
} else {
Person p = new Person();
p.setCountry(country);
p.setName(name);
MongoClient mongo = (MongoClient) request.getServletContext()
.getAttribute("MONGO_CLIENT");
MongoDBPersonDAO personDAO = new MongoDBPersonDAO(mongo);
personDAO.createPerson(p);
System.out.println("Person Added Successfully with id="+p.getId());
request.setAttribute("success", "Person Added Successfully");
List<Person> persons = personDAO.readAllPerson();
request.setAttribute("persons", persons);
RequestDispatcher rd = getServletContext().getRequestDispatcher(
"/persons.jsp");
rd.forward(request, response);
}
}
}
public Person createPerson(Person p) {
System.out.println(p.getName());
DBObject doc = PersonConverter.toDBObject(p);
System.out.println(doc);
//this.col.insert(doc);
this.col.getCollection("Persons").insert(doc);
System.out.println(col);
ObjectId id = (ObjectId) doc.get("_id");
p.setId(id.toString());
System.out.println(p +" teste02");
//com.mongodb.client.internal.MongoCollectionImpl@5be01b45 teste01
return p;
}
o erro está em this.col.getCollection(“Persons”).insert(doc);
INFO: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[5, 0, 4]}, minWireVersion=0, maxWireVersion=13, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=8198200}
com.mongodb.client.internal.MongoCollectionImpl@36d0fbc3 teste01
tt
{"name": "tt", "country": "ss"}
dez 11, 2021 6:42:36 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [servlets.AddPersonServletnew] in context with path [/MongoDBWebapp] threw exception
java.lang.NullPointerException
at dao.MongoDBPersonDAOnew.createPerson(MongoDBPersonDAOnew.java:46)
at servlets.AddPersonServletnew.doPost(AddPersonServletnew.java:40)