Null pointer

42 views
Skip to first unread message

SCK

unread,
May 23, 2012, 3:12:22 AM5/23/12
to Google Web Toolkit
Hi

I try to connect to my database with GWT RPC. But i get a error.

Help please

Thks



java.lang.NullPointerException
at
org.etude.gwt.server.DatabaseServiceImpl.saveData(DatabaseServiceImpl.java:
37)
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.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
569)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
208)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
248)
at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
362)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
729)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at
org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:
49)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
505)
at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
395)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:488)





package org.etude.gwt.server;

import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.Map;

import org.etude.gwt.client.DatabaseService;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class DatabaseServiceImpl extends RemoteServiceServlet
implements
DatabaseService {

/**
*
*/
private static final long serialVersionUID = 1L;

@SuppressWarnings("rawtypes")
@Override
public void saveData(Map formData) throws IllegalArgumentException {

try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://
localhost:3306/oracle", "root", "");

Statement st = conn.createStatement();

//avec décodage
StringBuffer sqlQuery = new StringBuffer("insert into
gwtusers(username,password,email,phone)");
sqlQuery.append("values(?,?,?,?)");

PreparedStatement stmt =
conn.prepareStatement(sqlQuery.toString());
LINE 37
stmt.setString(1,URLDecoder.decode(formData.get("username").toString(),"UTF-8"));

stmt.setString(2,URLDecoder.decode(formData.get("password").toString(),"UTF-8"));

stmt.setString(3,URLDecoder.decode(formData.get("email").toString(),"UTF-8"));

stmt.setString(4,URLDecoder.decode(formData.get("phone").toString(),"UTF-8"));
stmt.execute();

//sans décodage
st.executeQuery("insert into gwtusers values
('"+formData.get("username").toString()+
"','"+formData.get("password").toString()+
"','"+formData.get("email").toString()+
"','"+formData.get("phone").toString()+"')");

conn.close();
//stmt.close();
//st.close();


}catch(Exception e){
e.printStackTrace();
}

}

}

Thad

unread,
May 23, 2012, 10:10:58 AM5/23/12
to google-we...@googlegroups.com
You're formData map is probably null. Just a guess, but I think you need to be more specific with your Map class, using, say Map<K,V> or something more specific. From the develper's guide:

Raw Types

Collection classes such as java.util.Set and java.util.List are tricky because they operate in terms of Object instances. To make collections serializable, you should specify the particular type of objects they are expected to contain through normal type parameters (for example, Map<Foo,Bar> rather than just Map). If you use raw collections or maps you will get bloated code and be vulnerable to denial of service attacks.


See https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication#DevGuideRemoteProcedureCalls

Trevor Skaife

unread,
May 23, 2012, 10:48:02 AM5/23/12
to google-we...@googlegroups.com
To add to what Thad said, your map should look like this "Map<String, String> formData" since the key of the map looks like a String, and your just doing a toString on the value. So when you create your map it should probably look something like this.

Map<String, String> formData = new HashMap<String, String>();

It's really important that you type any collection object (Map, Set, List, ...) since your compiled code will be huge, and it save a lot of casting of objects. Not to mention being able to easily loop through collections using the a for-each loop like so.

List<String> items = new ArrayList<String>();
//add items to the list.

for(String item : items)
     print(item);

Lastly using the debugger is your friend. The possible items that could be null are formData, formData.get("username"), and stmt. My guess is that either your map is null, or your map doesn't contain "username".

Trevor

SCK

unread,
May 24, 2012, 6:49:54 AM5/24/12
to Google Web Toolkit
Hi

Thks very much. I follow your suggestions. It's OK now
> > com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServi­ceServlet.java:
>
> > 208)
> >         at
> > com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServi­ceServlet.java:
>
> > 248)
> >         at
> > com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Abstract­RemoteServiceServlet.java:
> > stmt.setString(1,URLDecoder.decode(formData.get("username").toString(),"UTF­-8"));
>
> > stmt.setString(2,URLDecoder.decode(formData.get("password").toString(),"UTF­-8"));
> > com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServi­ceServlet.java:
>
> > 208)
> >         at
> > com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServi­ceServlet.java:
>
> > 248)
> >         at
> > com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Abstract­RemoteServiceServlet.java:
> ...
>
> plus de détails »- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -
Reply all
Reply to author
Forward
0 new messages