I am using Jena which is an open-source Java framework for building
Semantic Web applications. It's been working fine on my local Eclipse
development. I have just deployed it and it fails because Jena uses
java.rmi.server.UID -- please see the error logs below.

java.rmi.server.UID is not listed on
http://code.google.com/intl/de/appengine/docs/java/jrewhitelist.html.

Since Jena is an open-source (third party) library, I don't have
control over it. One potential solution is to host Jena outside GAE
such as Amazon EC2. Obviously, it is not ideal.
It solves the limitation of the JRE Class White List but it will
introduce other problems (scalability, another indirection,
maintenance, etc).

I am sure this is a common issue as many of us are porting existing
apps/libraries/SDKs to Google App Engine.

I'd appreciate your advice on this issue.
Thanks in advance for your help.

My environments: GAE Java 1.2.6, GWT 1.7.1, Eclipse(Galileo), Windows
Vista (32-bit).

ERROR LOGS
10-29 07:38AM 59.438 /col/input 500 6020ms 5638cpu_ms 0kb Mozilla/5.0
(Windows; U; Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/
3.5.3 (.NET CLR 3.5.30729),gzip(gfe)
98.232.111.83 - - [29/Oct/2009:07:39:05 -0700] "POST /col/input HTTP/
1.1" 500 113 "http://foafan2000.appspot.com/col/
69AAFD5DE4B9915A24B29439E261B4A5.cache.html" "Mozilla/5.0 (Windows; U;
Windows NT 6.0; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET
CLR 3.5.30729),gzip(gfe)" "foafan2000.appspot.com"
E 10-29 07:39AM 05.433
javax.servlet.ServletContext log: Exception while dispatching incoming
RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract java.lang.String com.col.client.CInputService.getFoaf
(java.lang.String)' threw an unexpected exception:
java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted
class. Please see the Google App Engine developer's guide for more
details.
        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.runtime.jetty.SaveSessionFilter.doFilter
(SaveSessionFilter.java:35)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
        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.runtime.jetty.AppVersionHandlerMap.handle
(AppVersionHandlerMap.java:238)
        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.headerComplete
(HttpConnection.java:830)
        at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable
(RpcRequestParser.java:76)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
        at
com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest
(JettyServletEngineAdapter.java:139)
        at com.google.apphosting.runtime.JavaRuntime.handleRequest
(JavaRuntime.java:239)
        at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5135)
        at com.google.apphosting.base.RuntimePb$EvaluationRuntime
$6.handleBlockingRequest(RuntimePb.java:5133)
        at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest
(BlockingApplicationHandler.java:24)
        at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:
363)
        at com.google.net.rpc.impl.Server$2.run(Server.java:814)
        at com.google.tracing.LocalTraceSpanRunnable.run
(LocalTraceSpanRunnable.java:56)
        at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan
(LocalTraceSpanBuilder.java:516)
        at com.google.net.rpc.impl.Server.startRpc(Server.java:769)
        at com.google.net.rpc.impl.Server.processRequest(Server.java:351)
        at com.google.net.rpc.impl.ServerConnection.messageReceived
(ServerConnection.java:437)
        at com.google.net.rpc.impl.RpcConnection.parseMessages
(RpcConnection.java:319)
        at com.google.net.rpc.impl.RpcConnection.dataReceived
(RpcConnection.java:290)
        at com.google.net.async.Connection.handleReadEvent(Connection.java:
436)
        at com.google.net.async.EventDispatcher.processNetworkEvents
(EventDispatcher.java:762)
        at com.google.net.async.EventDispatcher.internalLoop
(EventDispatcher.java:207)
        at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:
101)
        at com.google.net.rpc.RpcService.runUntilServerShutdown
(RpcService.java:251)
        at com.google.apphosting.runtime.JavaRuntime$RpcRunnable.run
(JavaRuntime.java:396)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: java.rmi.server.UID is a
restricted class. Please see the Google App Engine developer's guide
for more details.
        at java.rmi.server.UID.<clinit>(UID.java)
        at com.hp.hpl.jena.rdf.model.AnonId.<init>(AnonId.java:78)
        at com.hp.hpl.jena.rdf.model.AnonId.create(AnonId.java:60)
        at com.hp.hpl.jena.graph.Node.createAnon(Node.java:45)
        at com.hp.hpl.jena.rdf.arp.JenaReader.convert(JenaReader.java:116)
        at com.hp.hpl.jena.rdf.arp.JenaReader.convert(JenaReader.java:124)
        at com.hp.hpl.jena.rdf.arp.JenaHandler.statement(JenaHandler.java:64)
        at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.triple(XMLHandler.java:98)
        at com.hp.hpl.jena.rdf.arp.impl.ParserSupport.triple
(ParserSupport.java:240)
        at com.hp.hpl.jena.rdf.arp.states.WantDescription.startElement
(WantDescription.java:85)
        at com.hp.hpl.jena.rdf.arp.impl.XMLHandler.startElement
(XMLHandler.java:137)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown
Source)
        at org.apache.xerces.impl.XMLNamespaceBinder.handleStartElement
(Unknown Source)
        at org.apache.xerces.impl.XMLNamespaceBinder.startElement(Unknown
Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement
(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument
(Unknown Source)
        at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
        at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at com.hp.hpl.jena.rdf.arp.impl.RDFXMLParser.parse(RDFXMLParser.java:
107)
        at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:158)
        at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:145)
        at com.hp.hpl.jena.rdf.arp.JenaReader.read(JenaReader.java:215)
        at com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:217)
        at com.hp.hpl.jena.ontology.OntDocumentManager.findMetadata
(OntDocumentManager.java:895)
        at com.hp.hpl.jena.ontology.OntDocumentManager.initialiseMetadata
(OntDocumentManager.java:853)
        at com.hp.hpl.jena.ontology.OntDocumentManager.<init>
(OntDocumentManager.java:201)
        at com.hp.hpl.jena.ontology.OntDocumentManager.<init>
(OntDocumentManager.java:183)
        at com.hp.hpl.jena.ontology.OntDocumentManager.<init>
(OntDocumentManager.java:167)
        at com.hp.hpl.jena.ontology.OntDocumentManager.getInstance
(OntDocumentManager.java:245)
        at com.hp.hpl.jena.ontology.OntModelSpec.getDocumentManager
(OntModelSpec.java:340)
        at com.hp.hpl.jena.ontology.impl.OntModelImpl.getDocumentManager
(OntModelImpl.java:181)
        at com.hp.hpl.jena.ontology.impl.OntModelImpl.loadImports
(OntModelImpl.java:1887)
        at com.hp.hpl.jena.ontology.impl.OntModelImpl.<init>
(OntModelImpl.java:148)
        at com.hp.hpl.jena.ontology.impl.OntModelImpl.<init>
(OntModelImpl.java:120)
        at com.hp.hpl.jena.rdf.model.ModelFactory.createOntologyModel
(ModelFactory.java:400)
        at com.col.server.foaf.Foaf.createModel(Foaf.java:57)
        at com.col.server.CModel.getFoaf(CModel.java:41)
        at com.col.server.CInputServiceImpl.getFoaf(CInputServiceImpl.java:
33)
        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(Method.java:40)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:527)
        ... 43 more
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to