Hi,
I'm trying to run the example on a google appengine.
I'm using jpoxy-1.0.17.jar
I was not sure which jar should I include for org.json.JSONObject so I
tried with the following two options I found:
json-jena-1.0 and json-rpc-1.0
I'm getting some errors that I could not resolve and appreacite your
help - I'm a bit new to this env so please excuse my ignorance.
error I'm getting
:
May 20, 2011 8:54:56 AM com.google.apphosting.utils.jetty.JettyLogger
info
INFO: Logging to JettyLogger(null) via
com.google.apphosting.utils.jetty.JettyLogger
May 20, 2011 8:54:56 AM
com.google.apphosting.utils.config.AppEngineWebXmlReader
readAppEngineWebXml
INFO: Successfully processed C:\Users\acohen\Documents\my docs\private
\eclipse\ws5\AngelServer\war\WEB-INF/appengine-web.xml
May 20, 2011 8:54:56 AM
com.google.apphosting.utils.config.AbstractConfigXmlReader
readConfigXml
INFO: Successfully processed C:\Users\acohen\Documents\my docs\private
\eclipse\ws5\AngelServer\war\WEB-INF/web.xml
May 20, 2011 8:54:57 AM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: failed JsonRpc: java.lang.NoClassDefFoundError: org/
reflections/Configuration
May 20, 2011 8:54:57 AM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: failed
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@bbf7aa{/,C:
\Users\acohen\Documents\my docs\private\eclipse\ws5\AngelServer\war}:
java.lang.NoClassDefFoundError: org/reflections/Configuration
May 20, 2011 8:54:57 AM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: failed JettyContainerService$ApiProxyHandler@143724e:
java.lang.NoClassDefFoundError: org/reflections/Configuration
May 20, 2011 8:54:57 AM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: Error starting handlers
java.lang.NoClassDefFoundError: org/reflections/Configuration
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at
org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:
428)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:
263)
at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
at
org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:
685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:
1250)
at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:
517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:
467)
at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:
130)
at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:
130)
at org.mortbay.jetty.Server.doStart(Server.java:224)
at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:
50)
at
com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:
186)
at
com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:
157)
at
com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:
169)
at com.google.appengine.tools.development.DevAppServerMain
$StartAction.apply(DevAppServerMain.java:164)
at com.google.appengine.tools.util.Parser
$ParseResult.applyArgs(Parser.java:48)
at
com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:
113)
at
com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:
89)
Caused by: java.lang.ClassNotFoundException:
org.reflections.Configuration
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at
com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:
176)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 27 more
May 20, 2011 8:54:57 AM
com.google.appengine.tools.development.DevAppServerImpl start
INFO: The server is running at
http://localhost:8888/
the web.xml I'm using is:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xmlns="
http://java.sun.com/xml/ns/javaee"
xmlns:web="
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>JsonRpc</servlet-name>
<servlet-class>org.jpoxy.RPC</servlet-class>
<init-param>
<param-name>rpcclasses</param-name>
<param-value>com.angelserver.JsonRpcServlet</param-value>
</init-param>
<init-param>
<param-name>expose_methods</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>persist_class</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>detailed_errors</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>use_full_classname</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JsonRpc</servlet-name>
<url-pattern>/jsonrpc</url-pattern>
</servlet-mapping>
</web-app>
and the the following servlet:
package com.angelserver;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jpoxy.Response;
import org.jpoxy.events.JSONRPCEventListener;
import org.jpoxy.events.JSONRPCMessage;
import org.jpoxy.events.JSONRPCMessageEvent;
import org.json.JSONObject;
public class JsonRpcServlet implements JSONRPCEventListener {
private ServletConfig config;
private HttpSession session;
private HttpServletRequest request;
private HttpServletResponse response;
private Response lastresponse;
public JsonRpcServlet() {
System.out.println("Query init");
}
public static String test() {
return "test successful";
}
public float add(float a, float b) {
return a + b;
}
public float sub(float a, float b) {
return a - b;
}
public String list(int a, int b, int c) {
return "a:"+a+" b:"+b+" c:"+c;
}
public String echo(String s) {
return s;
}
public String echoJson(JSONObject obj) throws
UnsupportedEncodingException {
return URLEncoder.encode(obj.toString(), "UTF-8");
}
public Integer sessionCounter() {
Integer count = (Integer) session.getAttribute("count");
if(count == null) count = 1;
else count += 1;
System.out.println("count is: "+count);
session.setAttribute("count", count);
return (Integer) session.getAttribute("count");
}
public String getLastResponse() {
if(lastresponse != null) return (String) lastresponse.getResult();
return "";
}
public String getConfig() {
if(config != null) return config.getInitParameter("rpcclasses");
return "";
}
public void messageReceived(JSONRPCMessageEvent me) {
switch(me.message().getCode()) {
case JSONRPCMessage.INIT:
config = me.message().getServletConfig();
break;
}
}
}
Thanks in advance for your help
Amir