Calling RPC from gwt-shell-hosted on netbeans

19 views
Skip to first unread message

joe young

unread,
Jan 9, 2009, 11:25:19 AM1/9/09
to Google Web Toolkit
I'm having trouble calling RPC in shell hosted mode.

Currently I have a simple login page that use rpc to validate the user/
password. And when I tried running with shell hosted mode, it always
give me an onFailure() Error "ERROR"
final AsyncCallback callback = new AsyncCallback() {
public void onSuccess(Object result) {
// take the result coming from the server
boolean ok = Boolean.valueOf(result.toString
()).booleanValue();
if (ok) {
MessageBox.alert("Success", "Successfully logged
in!");
} else {
MessageBox.alert("Invalid", "Your User/Password
combination is incorrect.");
}
}
public void onFailure(Throwable caught) {
MessageBox.alert("Error", "ERROR:");
}
};

From the error log, i got the following 3 errors.
-----------------------------------------------
[INFO] StandardContext[]Marking servlet LoginService as unavailable
-----------------------------------------------
[WARN] StandardContext[]Error loading WebappClassLoader
delegate: false
repositories:
----------> Parent Classloader:
sun.misc.Launcher$AppClassLoader@1372a1a
com.sun.dmt.admin.server.login.LoginServiceImpl
java.lang.ClassNotFoundException:
com.sun.dmt.admin.server.login.LoginServiceImpl
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1340)
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1189)
at org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:964)
at org.apache.catalina.core.StandardWrapper.allocate
(StandardWrapper.java:687)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:144)
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(Thread.java:619)
-----------------------------------------------
[WARN] StandardWrapperValve[LoginService]: Allocate exception for
servlet LoginService
javax.servlet.ServletException: Wrapper cannot find servlet class
com.sun.dmt.admin.server.login.LoginServiceImpl or a class it depends
on
at org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:974)
at org.apache.catalina.core.StandardWrapper.allocate
(StandardWrapper.java:687)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:144)
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(Thread.java:619)
-----------------------------------------------

Seems to me that hosted cannot find my servletclass. Do I need to
copy my classes to my tomcat lite directory such as /tomcat/webapps/
WEB-INF/classes ??

Currently the tomcat lite only has the following files

/tomcat/conf/gwt/localhost/
/tomcat/conf/gwt/lweb.xml
/tomcat/webapps/ROOT/WEB-INF/web.xml
/tomcat/webapps/ROOT/WEB-INF/lib/<all jar files>
/tomcat/webapps/ROOT/WEB-INF/wsdl/
/tomcat/work/gwt/localhost/_/tldCashe.ser
/tomcat/work/gwt/localhost/_/loader/*

Please let me know how to run the rpc popularly~
Thanks!

olivier FRESSE

unread,
Jan 9, 2009, 11:36:37 AM1/9/09
to Google-We...@googlegroups.com
is com.sun.dmt.admin.server.login.LoginServiceImpl in the classpath of the hosted browser ?
If you use the Tomcat instance of the hosted browser, that should be enough.


2009/1/9 joe young <keven...@gmail.com>

joe young

unread,
Jan 9, 2009, 11:47:54 AM1/9/09
to Google Web Toolkit
where is the classpath of the hosted browser?

there is no classes in /tomcat directory, do i need to copy the
classes to /tomcat//webapps/ROOT/WEB-INF/classes/ ??



On Jan 9, 11:36 am, "olivier FRESSE" <olivier.fre...@gmail.com> wrote:
> is com.sun.dmt.admin.server.login.LoginServiceImpl in the classpath of the
> hosted browser ?
> If you use the Tomcat instance of the hosted browser, that should be enough.
>
> 2009/1/9 joe young <keven.c...@gmail.com>

Kevin Tarn

unread,
Jan 9, 2009, 1:11:09 PM1/9/09
to Google-We...@googlegroups.com
Did you define your servlet in web.xml that is located in your NetBeans project directory's web\WEB-INF?

Ex.
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>xxx.xxx.server.LoginServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/xxx.xxx.xxx/LoginService</url-pattern>
    </servlet-mapping>

If you deploy your project by WAR file, you just need to copy WAR to your tomcat. You don't need to write mapping in tomcat's conf.

Kevin

joe young

unread,
Jan 9, 2009, 2:35:39 PM1/9/09
to Google Web Toolkit
Yes, i did define in tomcat/webaps/ROOT/WEB-INF/web.xml

<servlet>
<servlet-name>LoginService</servlet-name>
<servlet-
class>com.sun.dmt.admin.server.login.LoginServiceImpl</servlet-class>
</servlet>
<servlet>

<servlet-mapping>
<servlet-name>LoginService</servlet-name>
<url-pattern>/com.sun.dmt.admin.DMTAdmin/login</url-pattern>
</servlet-mapping>

and i copied the build/.../classes/ directory to tomcat/webaps/ROOT/
WEB-INF/classes but I still get this error!!

[INFO] StandardContext[]Marking servlet LoginService as unavailable
[WARN] StandardWrapperValve[LoginService]: Allocate exception for
servlet LoginService
javax.servlet.ServletException: Error instantiating servlet class
com.sun.dmt.admin.server.login.LoginServiceImpl
at org.apache.catalina.core.StandardWrapper.loadServlet
(StandardWrapper.java:996)
Anyone has any idea?
Thanks

On Jan 9, 1:11 pm, "Kevin Tarn" <kevn.t...@gmail.com> wrote:
> Did you define your servlet in web.xml that is located in your NetBeans
> project directory's web\WEB-INF?
>
> Ex.
>     <servlet>
>         <servlet-name>Login</servlet-name>
>         <servlet-class>xxx.xxx.server.LoginServiceImpl</servlet-class>
>     </servlet>
>     <servlet-mapping>
>         <servlet-name>Login</servlet-name>
>         <url-pattern>/xxx.xxx.xxx/LoginService</url-pattern>
>     </servlet-mapping>
>
> If you deploy your project by WAR file, you just need to copy WAR to your
> tomcat. You don't need to write mapping in tomcat's conf.
>
> Kevin
>
Reply all
Reply to author
Forward
0 new messages