gwt and jdbc

83 views
Skip to first unread message

Petein

unread,
Jun 19, 2009, 8:00:47 PM6/19/09
to Google Web Toolkit
package faceRecognition.server;

import faceRecognition.client.AuthService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import java.sql.*;
import java.util.*;
import java.text.SimpleDateFormat;

/**
* The server side implementation of the RPC service.
*/
@SuppressWarnings("serial")
public class AuthServiceImpl extends RemoteServiceServlet implements
AuthService {

public String doAuthenticate(String name, String surname,
String username, String password,
String email, String info){

String serverInfo = getServletContext().getServerInfo();
String userAgent = getThreadLocalRequest().getHeader("User-Agent");

//jdbc part

/*
Connection con = null;
try {

Class.forName("com.mysql.jdbc.Driver").newInstance();

//out.println("<br>driver is ok");

String url = "jdbc:mysql://" + "localhost" + "/" +
"USERSDB" + "?";
String usernamedb = "root";
String passworddb = "";
con = (Connection) DriverManager.getConnection(url,
usernamedb, passworddb);

Statement st = con.createStatement();
ResultSet rs;

rs = st.executeQuery("SELECT username, password FROM
users");

boolean found = false;

while (rs.next()) {
usernamedb = rs.getString(1);
passworddb = rs.getString(2);

if (usernamedb.equals(username)) {
found = true;
break;
}
}

if (!found){

password = " a";
//create user

String sql = "INSERT INTO testusers(name, username,
password, info) VALUES(?, ?, ?, ?)";


PreparedStatement pstmt = con.prepareStatement(sql);

// Set the values
pstmt.setString(1, name);
pstmt.setString(2, username);
pstmt.setString(3, password);
pstmt.setString(4, info);


//Calendar calendar = new GregorianCalendar(); String
time = calendar.getTime().toString(); //Thu Jun 11 02:30:10 EEST 2009

//String time = new GregorianCalendar().getTime
().toString();

//pstmt.setString(5, time);


pstmt.execute();

}



}catch(ClassNotFoundException cnfe){
return(cnfe.toString());
} catch(SQLException sqle){
return(sqle.toString());
} catch(InstantiationException ie){
return(ie.toString());
}catch (IllegalAccessException iae) {
return(iae.toString());
}

*/

return "Hello, " + name + " " + surname + "!<br><br>Server info: "
+ serverInfo
+ ".<br><br>Using:<br>" + userAgent + " Your request was sent!";
}
}


when this part of code is executed without the jdbc part it executes
fine and the RPC method works ok.
When i execute the code as it is above i get these errors:
The server is running at http://localhost:1598/
19 &#921;&#959;&#965;&#957; 2009 11:33:32 &#956;&#956;
com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE: [1245454412421000] javax.servlet.ServletContext log: Exception
while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract java.lang.String
faceRecognition.client.AuthService.doAuthenticate
(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)'
threw an unexpected exception: java.lang.ExceptionInInitializerError
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure
(RPC.java:360)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:546)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall
(RemoteServiceServlet.java:166)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost
(RemoteServiceServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1093)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:360)
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:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:306)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection$RequestHandler.content
(HttpConnection.java:844)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run
(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run
(BoundedThreadPool.java:442)
Caused by: java.lang.ExceptionInInitializerError
at com.mysql.jdbc.NonRegisteringDriver.connect
(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at faceRecognition.server.AuthServiceImpl.doAuthenticate
(AuthServiceImpl.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:527)
... 25 more
Caused by: java.security.AccessControlException: access denied
(java.lang.RuntimePermission modifyThreadGroup)
at java.security.AccessControlContext.checkPermission
(AccessControlContext.java:323)
at java.security.AccessController.checkPermission
(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:
532)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkPermission(DevAppServerFactory.java:122)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkAccess(DevAppServerFactory.java:149)
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:288)
at java.lang.Thread.init(Thread.java:332)
at java.lang.Thread.<init>(Thread.java:377)
at java.util.TimerThread.<init>(Timer.java:456)
at java.util.Timer.<init>(Timer.java:71)
at java.util.Timer.<init>(Timer.java:122)
at com.mysql.jdbc.ConnectionImpl.<clinit>(ConnectionImpl.java:208)
... 34 more

What's going on? I tried the same code with my jsp and it works fine

Enea

unread,
Jun 20, 2009, 6:00:39 AM6/20/09
to Google Web Toolkit
hm... I had similar problem with jdbc...

if you are using eclipse,
try to go under Project->properties->google->App Engine
and disable "Use Google App Engine" checkbox .



regards :)
> The server is running athttp://localhost:1598/

Petein

unread,
Jun 20, 2009, 5:40:19 PM6/20/09
to Google Web Toolkit
problem solved! Thanks!

@vi

unread,
Jun 27, 2009, 10:47:36 AM6/27/09
to Google Web Toolkit
Why is this restriction there?

Is there some kind of custom Security implemented for Google Apps?
> ...
>
> read more »

Sowjanya Yerramneni

unread,
Jun 29, 2009, 4:40:37 AM6/29/09
to Google-We...@googlegroups.com
Hi,
 
I am using spring and hibernate in my gwt application.
I configured my datasource in the application-context.xml.

<

bean id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

<value>jdbc.odbc.driver.OracleDriver</value>

</property>

<property name="url">

<value>jdbc:oracle:thin:@10.10.10.21:1521:wpstdev</value>

</property>

<property name="username">

<value>dohsy</value>

</property>

<property name="password">

<value>password</value>

</property>

</bean>

When I run the application (in hosted mode ) I get the 'couldnot connect jdbc connection error' though I had classes12.jar in my classpath.
Please help.


 

--
-Regards,
Sowjanya.

Keerthan MUTHURASA

unread,
Jun 29, 2009, 4:54:20 AM6/29/09
to Google-We...@googlegroups.com
Hi Sowjanya,

2009/6/29 Sowjanya Yerramneni <y.sow...@gmail.com>

Hi,
 
I am using spring and hibernate in my gwt application.
I configured my datasource in the application-context.xml.

<

bean id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName">

<value>jdbc.odbc.driver.OracleDriver</value>

</property>

<property name="url">

<value>jdbc:oracle:thin:@10.10.10.21:1521:wpstdev</value>

</property>

<property name="username">

<value>dohsy</value>

</property>

<property name="password">

<value>password</value>

</property>

</bean>

When I run the application (in hosted mode ) I get the 'couldnot connect jdbc connection error' though I had classes12.jar in my classpath.
Please help.

Do you also have your jar in your application server classpath as well (WEB-INF/lib) ?
 

Sowjanya Yerramneni

unread,
Jun 29, 2009, 5:23:45 AM6/29/09
to Google-We...@googlegroups.com
i have it in my web-inf/lib.
 
Where else should i place it? please be lil clear.
 
 
Thanks for your quick response.




--
-Regards,
Sowjanya.

Sowjanya Yerramneni

unread,
Jun 29, 2009, 5:26:15 AM6/29/09
to Google-We...@googlegroups.com
I tried to run the same on tomcat. I have it on the tomcat's common/lib folder... Still it did not work on tomcat too.

--
-Regards,
Sowjanya.

Keerthan MUTHURASA

unread,
Jun 29, 2009, 5:56:23 AM6/29/09
to Google-We...@googlegroups.com
Here the steps I followed to solve the previous mysql connection related error:

1- Add MySQL Connector to Eclipse and Tomcat Classpath
2- Created the class that connect to mysql (AuthServiceImpl  in the previous case)
3- Configure Interfaces on the client side (AuthService and AuthServiceAsync)
4- Configure the gwt.xml file  by adding the following

        <servlet class="com.myproject.server.AuthServiceImpl " path="/AuthServiceI" />

Could you print your error stack, that could help people to understand your problem.

2009/6/29 Sowjanya Yerramneni <y.sow...@gmail.com>

Sowjanya Yerramneni

unread,
Jun 29, 2009, 5:59:16 AM6/29/09
to Google-We...@googlegroups.com
Here is my stack trace:
 
[WARN] StandardWrapperValve[shell]: Servlet.service() for servlet shell threw exception
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/myPack/resources/applicationContext-database.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [jdbc.odbc.driver.OracleDriver]
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1278)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1011)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:475)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:412)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:383)
 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:276)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:273)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:175)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:485)
 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:716)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377)
 at com.myPack.server.ApplicationContext.initContextFile(ApplicationContext.java:95)
 at com.myPack.server.ApplicationContext.<init>(ApplicationContext.java:66)
 at com.myPack.server.ApplicationContext.getInstance(ApplicationContext.java:51)
 at com.myPack.server.GreetingServiceImpl.<init>(GreetingServiceImpl.java:32)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
 at java.lang.reflect.Constructor.newInstance(Unknown Source)
 at java.lang.Class.newInstance0(Unknown Source)
 at java.lang.Class.newInstance(Unknown Source)
 at com.google.gwt.dev.shell.GWTShellServlet.tryGetOrLoadServlet(GWTShellServlet.java:934)
 at com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:276)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
 at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.PropertyBatchUpdateException: Failed properties: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [jdbc.odbc.driver.OracleDriver]
 at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:102)
 at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1275)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1011)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:475)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:412)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:383)
 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:276)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:273)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:175)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:485)
 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:716)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377)
 at com.myPack.server.ApplicationContext.initContextFile(ApplicationContext.java:95)
 at com.myPack.server.ApplicationContext.<init>(ApplicationContext.java:66)
 at com.myPack.server.ApplicationContext.getInstance(ApplicationContext.java:51)
 at com.myPack.server.GreetingServiceImpl.<init>(GreetingServiceImpl.java:32)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
 at java.lang.reflect.Constructor.newInstance(Unknown Source)
 at java.lang.Class.newInstance0(Unknown Source)
 at java.lang.Class.newInstance(Unknown Source)
 at com.google.gwt.dev.shell.GWTShellServlet.tryGetOrLoadServlet(GWTShellServlet.java:934)
 at com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:276)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
 at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 at java.lang.Thread.run(Unknown Source)




--
-Regards,
Sowjanya.

Sowjanya Yerramneni

unread,
Jun 29, 2009, 6:01:51 AM6/29/09
to Google-We...@googlegroups.com
FYI,
 
JDBC class loads properly when I load it through my java class in other simple app  
using Class.forname();
 
However, in my latest app using spring and hibernate example, it couldnt load it.
 


 
--
-Regards,
Sowjanya.

Sowjanya Yerramneni

unread,
Jun 29, 2009, 6:30:38 AM6/29/09
to Google-We...@googlegroups.com
hey i gave a wrong driver name :(
 
I am sorry :(

--
-Regards,
Sowjanya.

Keerthan MUTHURASA

unread,
Jun 29, 2009, 6:33:19 AM6/29/09
to Google-We...@googlegroups.com
Alright ;)

2009/6/29 Sowjanya Yerramneni <y.sow...@gmail.com>
Reply all
Reply to author
Forward
0 new messages