error running the example in Appengine

627 views
Skip to first unread message

Amir

unread,
May 20, 2011, 5:09:24 AM5/20/11
to jpoxy
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

Wes Widner

unread,
May 20, 2011, 7:23:14 AM5/20/11
to jp...@googlegroups.com
Hey Amir,

jpoxy currently uses the original json Java implementation: http://json.org/java/ 

Here is the GitHub page for it: https://github.com/douglascrockford/JSON-java

From you error it also looks like you need the Google reflections jar which is available at: http://code.google.com/p/reflections/

Hope that fixes things up for you,
-Wes

Amir

unread,
May 22, 2011, 9:04:48 AM5/22/11
to jpoxy
Thanks,
I believe the main issue I had is as result of me trying to compile it
w/o using Maven to set the dependencies.
I assume I must do so to include all relevant packages required to run
Jpoxy - please correct me if I'm wrong.
So I did install now maven (1st time experience - so please excuse my
ignorant questions)
After doing so I still have some issues:
1. when execute (Debug as -> maven build/ maven clean/ etc) - not sure
I need to do it

[INFO] Scanning for projects...
[INFO]
[INFO]
------------------------------------------------------------------------
[INFO] Building jpoxy-example 1.0.9
[INFO]
------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ example
---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for
further details.
Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom
Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
[WARNING] The POM for org.codehaus.plexus:plexus-utils:jar:2.0.5 is
invalid, transitive dependencies (if any) will not be available,
enable debug logging for more details
[INFO]
------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 3:59.725s
[INFO] Finished at: Sun May 22 15:57:20 IDT 2011
[INFO] Final Memory: 2M/15M
[INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-
plugin:2.4.1:clean (default-clean) on project example: Execution
default-clean of goal org.apache.maven.plugins:maven-clean-plugin:
2.4.1:clean failed: Plugin org.apache.maven.plugins:maven-clean-plugin:
2.4.1 or one of its dependencies could not be resolved: Failed to
collect dependencies for org.apache.maven.plugins:maven-clean-
plugin:jar:2.4.1 (): Failed to read artifact descriptor for
org.apache.maven:maven-plugin-api:jar:2.0.6: Could not transfer
artifact org.apache.maven:maven-plugin-api:pom:2.0.6 from/to central
(http://repo1.maven.org/maven2): No response received after 60000 ->
[Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with
the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions,
please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException


2. when trying to build it as web app (debug as -> Web application)
May 22, 2011 1:01:15 PM com.google.apphosting.utils.jetty.JettyLogger
info
INFO: Logging to JettyLogger(null) via
com.google.apphosting.utils.jetty.JettyLogger
May 22, 2011 1:01:16 PM
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 22, 2011 1:01:16 PM
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 22, 2011 1:01:18 PM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: failed example: java.lang.NoClassDefFoundError: org/apache/
log4j/Logger
May 22, 2011 1:01:18 PM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: failed
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@974600{/,C:
\Users\acohen\Documents\my docs\private\eclipse\ws5\AngelServer\war}:
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
May 22, 2011 1:01:18 PM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: failed JettyContainerService$ApiProxyHandler@10f8ee4:
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
May 22, 2011 1:01:18 PM com.google.apphosting.utils.jetty.JettyLogger
warn
WARNING: Error starting handlers
java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at org.jpoxy.RPC.<clinit>(RPC.java:53)
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)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
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)
... 29 more
May 22, 2011 1:01:18 PM
com.google.appengine.tools.development.DevAppServerImpl start
INFO: The server is running at http://localhost:8888/


Still trying to debug it w/o success so far, but any input meanwhile
will be appreciated.
btw, I'm using Eclipse IDE and did install the m2e plugin.

Thanks,
Amir


On May 20, 2:23 pm, Wes Widner <kai5263...@gmail.com> wrote:
> Hey Amir,
>
> jpoxy currently uses the original json Java implementation:http://json.org/java/
>
> Here is the GitHub page for it:https://github.com/douglascrockford/JSON-java
>
> From you error it also looks like you need the Google reflections jar which
> is available at:http://code.google.com/p/reflections/
>
> Hope that fixes things up for you,
> > INFO: The server is running athttp://localhost:8888/

Wes Widner

unread,
May 26, 2011, 8:37:12 PM5/26/11
to jp...@googlegroups.com
I'm not sure what is in the the org.codehaus.plexus:plexus-utils maven repo its trying to use. Can you post your project's pom.xml?

-Wes

Amir

unread,
May 28, 2011, 4:05:24 PM5/28/11
to jpoxy
below:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.angelserver</groupId>
<artifactId>example</artifactId>
<packaging>war</packaging>
<version>1.0.9</version>
<name>jpoxy-example</name>
<url>http://maven.apache.org</url>

<repositories>
<repository>
<id>jpoxy-webdav-repo</id>
<name>jpoxy maven repository</name>
<url>http://jpoxy.googlecode.com/svn/maven/repo/</url>
<layout>default</layout>
</repository>
</repositories>

<developers>
<developer>
<id>wes</id>
<name>Wes</name>
<email>w...@werxltd.com</email>
<url>http://www.facebook.com/weswidner</url>
<organization>Werx Limited</organization>
<organizationUrl>http://werxltd.com</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>-5</timezone>
<properties>
<picUrl>http://bit.ly/6rXWIw</picUrl>
</properties>
</developer>
</developers>

<dependencies>
<dependency>
<groupId>org</groupId>
<artifactId>jpoxy</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-servlet-tester</artifactId>
<version>6.1.6</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9001</stopPort>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</
scanIntervalSeconds>
<daemon>true</daemon>
<port>9001</port>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>jpoxy-example</finalName>
</build>
</project>
> >http://repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/2.0.6...
> > Downloading:
> >http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/...
> >http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionExce...
> > com.google.appengine.tools.development.JettyContainerService.startContainer (JettyContainerService.java:
> > 186)
> >        at
>
> > com.google.appengine.tools.development.AbstractContainerService.startup(Abs tractContainerService.java:
> > 157)
> >        at
>
> > com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerI mpl.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>(DevAppServer Main.java:
> > 113)
> >        at
>
> > com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMa in.java:
> > 89)
> > Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
> >         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(Iso latedAppClassLoader.java:
> > 176)
> >        at java.lang.ClassLoader.loadClass(Unknown Source)
> >         ... 29 more
> > May 22, 2011 1:01:18 PM
> > com.google.appengine.tools.development.DevAppServerImpl start
> > INFO: The server is running athttp://localhost:8888/
> ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages