Errors in test with rpc, memcache and jdo

35 views
Skip to first unread message

nodchip

unread,
Aug 2, 2009, 12:22:58 AM8/2/09
to Google App Engine
Dear Google App Engine group members:

Hello, I am new to this gourp.

I tried to test my application using JUnit.
My application uses rpc, memcache and jdo.
When I run the test with GWTTestSuite,
some errors occured and I could not test my application.
Below is the error showed.

Starting HTTP on port 0
HTTP listening on port 59799
[WARN] StandardContext[]Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract boolean foo.bar.client.Rpc.addData
(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 com.google.gwt.dev.shell.GWTShellServlet.service
(GWTShellServlet.java:288)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
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(Thread.java:619)
Caused by: java.lang.ExceptionInInitializerError
at foo.bar.server.RpcImpl.addData(RpcImpl.java:13)
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)
... 30 more
Caused by: javax.jdo.JDOFatalUserException: Duplicate PMF name
"transactions-optional" found in file:/C:/develop/java/baz/src/META-
INF/jdoconfig.xml and file:/C:/develop/java/baz/war/WEB-INF/classes/
META-INF/jdoconfig.xml.
at javax.jdo.JDOHelper.getNamedPMFProperties(JDOHelper.java:1300)
at javax.jdo.JDOHelper.getPropertiesFromJdoconfig(JDOHelper.java:
1232)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:
1079)
at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:
914)
at foo.bar.server.DirectDatastore.<init>(DirectDatastore.java:8)
at foo.bar.server.DirectDatastore.createInstance(DirectDatastore.java:
15)
at foo.bar.server.DatastoreFactory.<clinit>(DatastoreFactory.java:4)
... 36 more
com.google.gwt.user.client.rpc.StatusCodeException: The call failed on
the server; see server log for details
at
com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived
(RequestCallbackAdapter.java:192)
at com.google.gwt.http.client.Request.fireOnResponseReceivedImpl
(Request.java:264)
at com.google.gwt.http.client.Request.fireOnResponseReceivedAndCatch
(Request.java:236)
at com.google.gwt.http.client.Request.fireOnResponseReceived
(Request.java:227)
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.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:
103)
at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod
(IDispatchImpl.java:126)
at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke
(IDispatchProxy.java:155)
at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke
(IDispatchImpl.java:294)
at com.google.gwt.dev.shell.ie.IDispatchImpl.method6
(IDispatchImpl.java:194)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6
(COMObject.java:117)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
at com.google.gwt.dev.SwtHostedModeBase.processEvents
(SwtHostedModeBase.java:235)
at com.google.gwt.dev.HostedModeBase.pumpEventLoop
(HostedModeBase.java:558)
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:652)
at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:346)
at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:
219)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:132)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run
(JUnit38ClassRunner.java:79)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run
(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run
(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
(RemoteTestRunner.java:197)
[WARN] StandardContext[]Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract boolean foo.bar.client.Rpc.addData
(java.lang.String,java.lang.String)' threw an unexpected exception:
java.lang.NoClassDefFoundError: Could not initialize class
foo.bar.server.DatastoreFactory
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 com.google.gwt.dev.shell.GWTShellServlet.service
(GWTShellServlet.java:288)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
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(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class
foo.bar.server.DatastoreFactory
at foo.bar.server.RpcImpl.addData(RpcImpl.java:13)
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)
... 30 more
com.google.gwt.user.client.rpc.StatusCodeException: The call failed on
the server; see server log for details
at
com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived
(RequestCallbackAdapter.java:192)
at com.google.gwt.http.client.Request.fireOnResponseReceivedImpl
(Request.java:264)
at com.google.gwt.http.client.Request.fireOnResponseReceivedAndCatch
(Request.java:236)
at com.google.gwt.http.client.Request.fireOnResponseReceived
(Request.java:227)
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.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:
103)
at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod
(IDispatchImpl.java:126)
at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke
(IDispatchProxy.java:155)
at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke
(IDispatchImpl.java:294)
at com.google.gwt.dev.shell.ie.IDispatchImpl.method6
(IDispatchImpl.java:194)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6
(COMObject.java:117)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
at com.google.gwt.dev.SwtHostedModeBase.processEvents
(SwtHostedModeBase.java:235)
at com.google.gwt.dev.HostedModeBase.pumpEventLoop
(HostedModeBase.java:558)
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:652)
at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:346)
at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:
219)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:132)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run
(JUnit38ClassRunner.java:79)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run
(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run
(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
(RemoteTestRunner.java:197)

I can understand the PMF name is duplicated.
But I think "war/WEB-INF/classes/META-INF/jdoconfig.xml" was
copied from "baz/src/META-INF/jdoconfig.xml" and
I can not avoid the duplication.

As a test, I rewrote "transactions-optional" into "transactions-
optional0"
in "baz/src/META-INF/jdoconfig.xml".
Then I got another error below.

Starting HTTP on port 0
HTTP listening on port 59867
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.views" not registered, but plugin
"org.eclipse.jdt.junit" defined in file:/C:/eclipse/configuration/
org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.perspectiveExtensions" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.preferencePages" not registered,
but plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.keywords" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.debug.core.launchConfigurationTypes"
not registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point
"org.eclipse.debug.core.launchConfigurationComparators" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point
"org.eclipse.debug.ui.launchConfigurationTypeImages" not registered,
but plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point
"org.eclipse.debug.ui.launchConfigurationTabGroups" not registered,
but plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.newWizards" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.popupMenus" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.actionSets" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.actionSetPartAssociations" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.debug.ui.launchShortcuts" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point
"org.eclipse.jdt.core.classpathVariableInitializer" not registered,
but plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.jdt.ui.quickFixProcessors" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.jdt.ui.classpathFixProcessors" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.ide.markerResolution" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.core.expressions.propertyTesters" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point
"org.eclipse.ltk.core.refactoring.renameParticipants" not registered,
but plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.commands" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.bindings" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.core.runtime.preferences" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point
"org.eclipse.jdt.core.classpathContainerInitializer" not registered,
but plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.jdt.ui.classpathContainerPage" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.ui.editors" not registered, but
plugin "org.eclipse.jdt.junit" defined in file:/C:/eclipse/
configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/MANIFEST.MF
refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
registerExtensions
警告: Extension Point "org.eclipse.core.contenttype.contentTypes" not
registered, but plugin "org.eclipse.jdt.junit" defined in file:/C:/
eclipse/configuration/org.eclipse.osgi/bundles/308/1/.cp/META-INF/
MANIFEST.MF refers to it.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
情報: Bundle "org.datanucleus.jpa" has an optional dependency to
"org.datanucleus.enhancer" but it cannot be resolved
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.ui.ide" but
it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.ui.views"
but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.jface.text"
but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.ui.workbench.texteditor" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.ui.editors"
but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.ui" but it
cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.core.expressions" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.core.resources" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.debug.core"
but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.debug.ui"
but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.jdt.core"
but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.jdt.ui" but
it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.core.runtime" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.jdt.launching" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.jdt.debug.ui" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.jdt.junit.runtime" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires "org.eclipse.compare" but
it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.ltk.core.refactoring" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.core.variables" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.ltk.ui.refactoring" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.equinox.simpleconfigurator.manipulator" but it cannot be
resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
致命的: Bundle "org.eclipse.jdt.junit" requires
"org.eclipse.equinox.frameworkadmin" but it cannot be resolved.
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
情報: Bundle "org.datanucleus" has an optional dependency to
"org.eclipse.equinox.registry" but it cannot be resolved
2009/08/02 13:04:38 org.datanucleus.plugin.NonManagedPluginRegistry
resolveConstraints
情報: Bundle "org.datanucleus" has an optional dependency to
"org.eclipse.core.runtime" but it cannot be resolved
2009/08/02 13:04:38 org.datanucleus.PersistenceConfiguration
setProperty
情報: Property datanucleus.rdbms.sql.allowAllSQLStatements unknown -
will be ignored
2009/08/02 13:04:38 org.datanucleus.PersistenceConfiguration
setProperty
情報: Property datanucleus.rdbms.stringDefaultLength unknown - will be
ignored
2009/08/02 13:04:38 org.datanucleus.PersistenceConfiguration
setProperty
情報: Property datanucleus.appengine.autoCreateDatastoreTxns unknown -
will be ignored
2009/08/02 13:04:38 org.datanucleus.ObjectManagerFactoryImpl
logConfiguration
情報: ================= Persistence Configuration ===============
2009/08/02 13:04:38 org.datanucleus.ObjectManagerFactoryImpl
logConfiguration
情報: DataNucleus Persistence Factory - Vendor: "DataNucleus" Version:
"1.1.4"
2009/08/02 13:04:38 org.datanucleus.ObjectManagerFactoryImpl
logConfiguration
情報: DataNucleus Persistence Factory initialised for datastore
URL="appengine" driver="" userName=""
2009/08/02 13:04:38 org.datanucleus.ObjectManagerFactoryImpl
logConfiguration
情報: ===========================================================
2009/08/02 13:04:39 org.datanucleus.PersistenceConfiguration
setProperty
情報: Property datanucleus.query.cached unknown - will be ignored
java.lang.NullPointerException
at com.google.appengine.api.NamespaceManager.get
(NamespaceManager.java:71)
at com.google.appengine.api.memcache.MemcacheServiceImpl.setNamespace
(MemcacheServiceImpl.java:181)
at com.google.appengine.api.memcache.MemcacheServiceImpl.<init>
(MemcacheServiceImpl.java:145)
at
com.google.appengine.api.memcache.MemcacheServiceFactory.getMemcacheService
(MemcacheServiceFactory.java:25)
at com.google.appengine.api.memcache.stdimpl.GCache.<init>
(GCache.java:75)
at com.google.appengine.api.memcache.stdimpl.GCacheFactory.createCache
(GCacheFactory.java:63)
at foo.bar.server.CachedDatastore.<init>(CachedDatastore.java:16)
at foo.bar.server.DatastoreFactory.<clinit>(DatastoreFactory.java:4)
at foo.bar.server.RpcImpl.addData(RpcImpl.java:13)
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)
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 com.google.gwt.dev.shell.GWTShellServlet.service
(GWTShellServlet.java:288)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
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(Thread.java:619)
2009/08/02 13:04:39 org.datanucleus.jdo.metadata.JDOMetaDataManager
<init>
情報: Registering listener for metadata initialisation
2009/08/02 13:04:39 org.datanucleus.jdo.metadata.JDOAnnotationReader
processClassAnnotations
情報: Class "foo.bar.server.Data" has been specified with JDO
annotations so using those.
2009/08/02 13:04:40 org.datanucleus.jdo.metadata.JDOMetaDataManager
$MetaDataRegisterClassListener registerClass
情報: Listener found initialisation for persistable class
foo.bar.server.Data
2009/08/02 13:04:40 org.datanucleus.store.appengine.MetaDataValidator
validate
情報: Performing appengine-specific metadata validation for
foo.bar.server.Data
2009/08/02 13:04:40 org.datanucleus.store.appengine.MetaDataValidator
validate
情報: Finished performing appengine-specific metadata validation for
foo.bar.server.Data
[WARN] StandardContext[]Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract boolean foo.bar.client.Rpc.addData
(java.lang.String,java.lang.String)' threw an unexpected exception:
java.lang.NullPointerException: No API environment is registered for
this thread.
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 com.google.gwt.dev.shell.GWTShellServlet.service
(GWTShellServlet.java:288)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
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(Thread.java:619)
Caused by: java.lang.NullPointerException: No API environment is
registered for this thread.
at
com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId
(DatastoreApiHelper.java:63)
at
com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace
(DatastoreApiHelper.java:73)
at com.google.appengine.api.datastore.Key.<init>(Key.java:100)
at com.google.appengine.api.datastore.Key.<init>(Key.java:85)
at com.google.appengine.api.datastore.Key.<init>(Key.java:81)
at com.google.appengine.api.datastore.Entity.<init>(Entity.java:103)
at com.google.appengine.api.datastore.Entity.<init>(Entity.java:84)
at org.datanucleus.store.appengine.DatastoreFieldManager.<init>
(DatastoreFieldManager.java:167)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject
(DatastorePersistenceHandler.java:178)
at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent
(JDOStateManagerImpl.java:3185)
at org.datanucleus.state.JDOStateManagerImpl.makePersistent
(JDOStateManagerImpl.java:3161)
at org.datanucleus.ObjectManagerImpl.persistObjectInternal
(ObjectManagerImpl.java:1298)
at org.datanucleus.ObjectManagerImpl.persistObject
(ObjectManagerImpl.java:1175)
at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
(JDOPersistenceManager.java:669)
at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
(JDOPersistenceManager.java:694)
at foo.bar.server.DirectDatastore.addData(DirectDatastore.java:29)
at foo.bar.server.CachedDatastore.addData(CachedDatastore.java:25)
at foo.bar.server.RpcImpl.addData(RpcImpl.java:13)
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)
... 30 more
com.google.gwt.user.client.rpc.StatusCodeException: The call failed on
the server; see server log for details
at
com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived
(RequestCallbackAdapter.java:192)
at com.google.gwt.http.client.Request.fireOnResponseReceivedImpl
(Request.java:264)
at com.google.gwt.http.client.Request.fireOnResponseReceivedAndCatch
(Request.java:236)
at com.google.gwt.http.client.Request.fireOnResponseReceived
(Request.java:227)
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.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:
103)
at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod
(IDispatchImpl.java:126)
at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke
(IDispatchProxy.java:155)
at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke
(IDispatchImpl.java:294)
at com.google.gwt.dev.shell.ie.IDispatchImpl.method6
(IDispatchImpl.java:194)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6
(COMObject.java:117)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
at com.google.gwt.dev.SwtHostedModeBase.processEvents
(SwtHostedModeBase.java:235)
at com.google.gwt.dev.HostedModeBase.pumpEventLoop
(HostedModeBase.java:558)
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:652)
at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:346)
at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:
219)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:132)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run
(JUnit38ClassRunner.java:79)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run
(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run
(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
(RemoteTestRunner.java:197)
[WARN] StandardContext[]Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract boolean foo.bar.client.Rpc.addData
(java.lang.String,java.lang.String)' threw an unexpected exception:
java.lang.NullPointerException: No API environment is registered for
this thread.
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 com.google.gwt.dev.shell.GWTShellServlet.service
(GWTShellServlet.java:288)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
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(Thread.java:619)
Caused by: java.lang.NullPointerException: No API environment is
registered for this thread.
at
com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId
(DatastoreApiHelper.java:63)
at
com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace
(DatastoreApiHelper.java:73)
at com.google.appengine.api.datastore.Key.<init>(Key.java:100)
at com.google.appengine.api.datastore.Key.<init>(Key.java:85)
at com.google.appengine.api.datastore.Key.<init>(Key.java:81)
at com.google.appengine.api.datastore.Entity.<init>(Entity.java:103)
at com.google.appengine.api.datastore.Entity.<init>(Entity.java:84)
at org.datanucleus.store.appengine.DatastoreFieldManager.<init>
(DatastoreFieldManager.java:167)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject
(DatastorePersistenceHandler.java:178)
at org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent
(JDOStateManagerImpl.java:3185)
at org.datanucleus.state.JDOStateManagerImpl.makePersistent
(JDOStateManagerImpl.java:3161)
at org.datanucleus.ObjectManagerImpl.persistObjectInternal
(ObjectManagerImpl.java:1298)
at org.datanucleus.ObjectManagerImpl.persistObject
(ObjectManagerImpl.java:1175)
at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
(JDOPersistenceManager.java:669)
at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
(JDOPersistenceManager.java:694)
at foo.bar.server.DirectDatastore.addData(DirectDatastore.java:29)
at foo.bar.server.CachedDatastore.addData(CachedDatastore.java:25)
at foo.bar.server.RpcImpl.addData(RpcImpl.java:13)
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)
... 30 more
com.google.gwt.user.client.rpc.StatusCodeException: The call failed on
the server; see server log for details
at
com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived
(RequestCallbackAdapter.java:192)
at com.google.gwt.http.client.Request.fireOnResponseReceivedImpl
(Request.java:264)
at com.google.gwt.http.client.Request.fireOnResponseReceived
(Request.java:229)
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.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:
103)
at com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod
(IDispatchImpl.java:126)
at com.google.gwt.dev.shell.ie.IDispatchProxy.invoke
(IDispatchProxy.java:155)
at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke
(IDispatchImpl.java:294)
at com.google.gwt.dev.shell.ie.IDispatchImpl.method6
(IDispatchImpl.java:194)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6
(COMObject.java:117)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
at com.google.gwt.dev.SwtHostedModeBase.processEvents
(SwtHostedModeBase.java:235)
at com.google.gwt.dev.HostedModeBase.pumpEventLoop
(HostedModeBase.java:558)
at com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:652)
at com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:346)
at com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:
219)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:132)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run
(JUnit38ClassRunner.java:79)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run
(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run
(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
(RemoteTestRunner.java:197)

Please tell me the way to avoid these errors.
Here is my source code.

./src/foo/bar/Baz.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//
EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-
source/core/src/gwt-module.dtd">
<module rename-to='baz'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />

<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.standard.Standard' />
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->

<!-- Other module inherits -->

<!-- Specify the app entry point class. -->
<entry-point class='foo.bar.client.Baz' />
<servlet class="foo.bar.server.RpcImpl" path="/rpc" />
</module>

./src/foo/bar/client/Baz.java
package foo.bar.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;

/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Baz implements EntryPoint, ClickHandler {
private final TextBox textBoxKey = new TextBox();
private final TextBox textBoxValue = new TextBox();
private final Button buttonAdd = new Button("add", this);
private final Button buttonGet = new Button("get", this);

public void onModuleLoad() {
RootPanel.get().add(textBoxKey);
RootPanel.get().add(textBoxValue);
RootPanel.get().add(buttonAdd);
RootPanel.get().add(buttonGet);
}

@Override
public void onClick(ClickEvent event) {
final Object source = event.getSource();
if (source == buttonAdd) {
addData();
} else if (source == buttonGet) {
getData();
}
}

private void addData() {
Rpc.Util.getInstance().addData(textBoxKey.getText(),
textBoxValue.getText(), callbackAddData);
}

private final AsyncCallback<Boolean> callbackAddData = new
AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
Window.alert(result.toString());
}

@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
Window.alert(caught.getMessage());
}
};

private void getData() {
Rpc.Util.getInstance().getData(textBoxKey.getText(),
callbackGetData);
}

private final AsyncCallback<String> callbackGetData = new
AsyncCallback<String>() {
@Override
public void onSuccess(String result) {
textBoxValue.setText(result);
}

@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
Window.alert(caught.getMessage());
}
};
}

./src/foo/bar/client/Rpc.java
package foo.bar.client;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("rpc")
public interface Rpc extends RemoteService {
public static class Util {
public static RpcAsync getInstance() {
return GWT.create(Rpc.class);
}
}

public boolean addData(String key, String value);

public String getData(String key);
}

./src/foo/bar/client/RpcAsync.java
package foo.bar.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
* The async counterpart of <code>GreetingService</code>.
*/
public interface RpcAsync {
void addData(String key, String value, AsyncCallback<Boolean>
callback);

void getData(String key, AsyncCallback<String> callback);
}

./src/foo/bar/server/CachedDatastore.java
package foo.bar.server;

import java.util.Collections;

import javax.cache.Cache;
import javax.cache.CacheManager;

public class CachedDatastore implements Datastore {
private final Datastore datastore;
private final Cache cache;

public CachedDatastore(Datastore datastore) {
this.datastore = datastore;
Cache cache = null;
try {
cache = CacheManager.getInstance().getCacheFactory().createCache
(Collections.emptyMap());
} catch (Exception e) {
e.printStackTrace();
}
this.cache = cache;
}

@Override
public boolean addData(String key, String value) {
final boolean result = datastore.addData(key, value);
cache.remove(key);
return result;
}

@Override
public String getData(String key) {
String value = (String) cache.get(key);
if (value == null) {
cache.put(key, value = datastore.getData(key));
}
return value;
}
}

./src/foo/bar/server/Data.java
package foo.bar.server;

import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.NullValue;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Data {
@PrimaryKey
@Persistent(nullValue = NullValue.EXCEPTION)
private String key;
@Persistent(nullValue = NullValue.EXCEPTION)
private String value;

public Data(String key, String value) {
this.setKey(key);
this.setValue(value);
}

public void setKey(String key) {
this.key = key;
}

public String getKey() {
return key;
}

public void setValue(String value) {
this.value = value;
}

public String getValue() {
return value;
}
}

./src/foo/bar/server/Datastore.java
package foo.bar.server;

public interface Datastore {

public boolean addData(String key, String value);

public String getData(String key);

}
./src/foo/bar/server/DatastoreFactory.java
package foo.bar.server;

public class DatastoreFactory {
private static final Datastore datastore = new CachedDatastore
(DirectDatastore.createInstance());

public static Datastore getInstance() {
return datastore;
}
}

./src/foo/bar/server/DirectDatastore.java
package foo.bar.server;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;

public class DirectDatastore implements Datastore {
private final PersistenceManagerFactory persistenceManagerFactory =
JDOHelper.getPersistenceManagerFactory("transactions-optional");

private PersistenceManager getPersistenceManager() {
return persistenceManagerFactory.getPersistenceManager();
}

public static final Datastore createInstance() {
return new DirectDatastore();
}

private DirectDatastore() {
}

public boolean addData(String key, String value) {
boolean result = false;
final PersistenceManager persistenceManager = getPersistenceManager
();
try {
persistenceManager.getObjectById(Data.class, key).setValue(value);
result = true;
} catch (Exception e) {
final Data data = new Data(key, value);
persistenceManager.makePersistent(data);
result = true;
} finally {
persistenceManager.close();
}
return result;
}

public String getData(String key) {
String result = null;
final PersistenceManager persistenceManager = getPersistenceManager
();
try {
final Data data = persistenceManager.getObjectById(Data.class,
key);
result = data.getValue();
} catch (Exception e) {
} finally {
persistenceManager.close();
}
return result;
}
}

./src/foo/bar/server/RpcImpl.java
package foo.bar.server;

import foo.bar.client.Rpc;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

/**
* The server side implementation of the RPC service.
*/
@SuppressWarnings("serial")
public class RpcImpl extends RemoteServiceServlet implements Rpc {
@Override
public boolean addData(String key, String value) {
return DatastoreFactory.getInstance().addData(key, value);
}

@Override
public String getData(String key) {
return DatastoreFactory.getInstance().getData(key);
}
}

./src/META-INF/jdoconfig.xml
<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/
jdoconfig">

<persistence-manager-factory name="transactions-optional">
<property name="javax.jdo.PersistenceManagerFactoryClass"

value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/
>
<property name="javax.jdo.option.ConnectionURL"
value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead"
value="true"/>
<property name="javax.jdo.option.NontransactionalWrite"
value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns"
value="true"/>
</persistence-manager-factory>
</jdoconfig>

./test/foo/bar/BazTestSuite.java
package foo.bar;

import junit.framework.Test;

import com.google.gwt.junit.tools.GWTTestSuite;

import foo.bar.client.RpcTest;

public class BazTestSuite extends GWTTestSuite {
public static Test suite() {
final GWTTestSuite suite = new GWTTestSuite("BazTestSuite");
suite.addTestSuite(RpcTest.class);
return suite;
}
}

./test/foo/bar/client/RpcTest.java
package foo.bar.client;

import org.junit.Test;

import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.Random;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class RpcTest extends GWTTestCase {
private static final int timeOut = 1000;

@Override
public String getModuleName() {
return "foo.bar.Baz";
}

private String createString() {
String result = "";
for (int i = 0; i < 32; ++i) {
result += (char) (Random.nextInt(26) + 'a');
}
return result;
}

@Test
public void testAddData() {
final String key = createString();
final String value = createString();
final AsyncCallback<Boolean> callbackAddData = new
AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
assertTrue(result);
finishTest();
}

@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
fail(caught.getMessage());
}
};
Rpc.Util.getInstance().addData(key, value, callbackAddData);
delayTestFinish(timeOut);
}

@Test
public void testGetData() {
final String key = createString();
final String value = createString();
final AsyncCallback<String> callback = new AsyncCallback<String>() {
@Override
public void onSuccess(String result) {
assertEquals(value, result);
finishTest();
}

@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
fail(caught.getMessage());
}
};
final AsyncCallback<Boolean> callbackAddData = new
AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
assertTrue(result);
Rpc.Util.getInstance().getData(key, callback);
}

@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
fail(caught.getMessage());
}
};
Rpc.Util.getInstance().addData(key, value, callbackAddData);
delayTestFinish(timeOut);
}
}

./tomcat/conf/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- A tweaked version of the default Tomcat web.xml to remove
everything except the stuff we want to use -->
<web-app version="2.4">

<session-config>
<session-timeout>30</session-timeout>
</session-config>

<mime-mapping>
<extension>abs</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ai</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aif</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aifc</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aiff</extension>
<mime-type>audio/x-aiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>aim</extension>
<mime-type>application/x-aim</mime-type>
</mime-mapping>
<mime-mapping>
<extension>art</extension>
<mime-type>image/x-jg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asf</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>asx</extension>
<mime-type>video/x-ms-asf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>au</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avi</extension>
<mime-type>video/x-msvideo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>avx</extension>
<mime-type>video/x-rad-screenplay</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bcpio</extension>
<mime-type>application/x-bcpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bin</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>body</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cdf</extension>
<mime-type>application/x-cdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cer</extension>
<mime-type>application/x-x509-ca-cert</mime-type>
</mime-mapping>
<mime-mapping>
<extension>class</extension>
<mime-type>application/java</mime-type>
</mime-mapping>
<mime-mapping>
<extension>cpio</extension>
<mime-type>application/x-cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>csh</extension>
<mime-type>application/x-csh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>css</extension>
<mime-type>text/css</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dib</extension>
<mime-type>image/bmp</mime-type>
</mime-mapping>
<mime-mapping>
<extension>doc</extension>
<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dtd</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dv</extension>
<mime-type>video/x-dv</mime-type>
</mime-mapping>
<mime-mapping>
<extension>dvi</extension>
<mime-type>application/x-dvi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>eps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>etx</extension>
<mime-type>text/x-setext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>exe</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gtar</extension>
<mime-type>application/x-gtar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>gz</extension>
<mime-type>application/x-gzip</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hdf</extension>
<mime-type>application/x-hdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htc</extension>
<mime-type>text/x-component</mime-type>
</mime-mapping>
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>hqx</extension>
<mime-type>application/mac-binhex40</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ief</extension>
<mime-type>image/ief</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jad</extension>
<mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jar</extension>
<mime-type>application/java-archive</mime-type>
</mime-mapping>
<mime-mapping>
<extension>java</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpe</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpeg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>js</extension>
<mime-type>text/javascript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jsf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>jspf</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>kar</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>latex</extension>
<mime-type>application/x-latex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>m3u</extension>
<mime-type>audio/x-mpegurl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mac</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>man</extension>
<mime-type>application/x-troff-man</mime-type>
</mime-mapping>
<mime-mapping>
<extension>me</extension>
<mime-type>application/x-troff-me</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mid</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>midi</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mif</extension>
<mime-type>application/x-mif</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mov</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>movie</extension>
<mime-type>video/x-sgi-movie</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp1</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp2</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mp3</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpa</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpe</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpeg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpega</extension>
<mime-type>audio/x-mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpg</extension>
<mime-type>video/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>mpv2</extension>
<mime-type>video/mpeg2</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ms</extension>
<mime-type>application/x-wais-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>nc</extension>
<mime-type>application/x-netcdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>oda</extension>
<mime-type>application/oda</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pbm</extension>
<mime-type>image/x-portable-bitmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pct</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pdf</extension>
<mime-type>application/pdf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pgm</extension>
<mime-type>image/x-portable-graymap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pic</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pict</extension>
<mime-type>image/pict</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pls</extension>
<mime-type>audio/x-scpls</mime-type>
</mime-mapping>
<mime-mapping>
<extension>png</extension>
<mime-type>image/png</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pnm</extension>
<mime-type>image/x-portable-anymap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>pnt</extension>
<mime-type>image/x-macpaint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppm</extension>
<mime-type>image/x-portable-pixmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ppt</extension>
<mime-type>application/powerpoint</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ps</extension>
<mime-type>application/postscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>psd</extension>
<mime-type>image/x-photoshop</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qt</extension>
<mime-type>video/quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qti</extension>
<mime-type>image/x-quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>qtif</extension>
<mime-type>image/x-quicktime</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ras</extension>
<mime-type>image/x-cmu-raster</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rgb</extension>
<mime-type>image/x-rgb</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rm</extension>
<mime-type>application/vnd.rn-realmedia</mime-type>
</mime-mapping>
<mime-mapping>
<extension>roff</extension>
<mime-type>application/x-troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rtf</extension>
<mime-type>application/rtf</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rtx</extension>
<mime-type>text/richtext</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sh</extension>
<mime-type>application/x-sh</mime-type>
</mime-mapping>
<mime-mapping>
<extension>shar</extension>
<mime-type>application/x-shar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>smf</extension>
<mime-type>audio/x-midi</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sit</extension>
<mime-type>application/x-stuffit</mime-type>
</mime-mapping>
<mime-mapping>
<extension>snd</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>src</extension>
<mime-type>application/x-wais-source</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sv4cpio</extension>
<mime-type>application/x-sv4cpio</mime-type>
</mime-mapping>
<mime-mapping>
<extension>sv4crc</extension>
<mime-type>application/x-sv4crc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>swf</extension>
<mime-type>application/x-shockwave-flash</mime-type>
</mime-mapping>
<mime-mapping>
<extension>t</extension>
<mime-type>application/x-troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tar</extension>
<mime-type>application/x-tar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tcl</extension>
<mime-type>application/x-tcl</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tex</extension>
<mime-type>application/x-tex</mime-type>
</mime-mapping>
<mime-mapping>
<extension>texi</extension>
<mime-type>application/x-texinfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>texinfo</extension>
<mime-type>application/x-texinfo</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tif</extension>
<mime-type>image/tiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tiff</extension>
<mime-type>image/tiff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tr</extension>
<mime-type>application/x-troff</mime-type>
</mime-mapping>
<mime-mapping>
<extension>tsv</extension>
<mime-type>text/tab-separated-values</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ulw</extension>
<mime-type>audio/basic</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ustar</extension>
<mime-type>application/x-ustar</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xbm</extension>
<mime-type>image/x-xbitmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xht</extension>
<mime-type>application/xhtml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xhtml</extension>
<mime-type>application/xhtml+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xml</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xpm</extension>
<mime-type>image/x-xpixmap</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xwd</extension>
<mime-type>image/x-xwindowdump</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wav</extension>
<mime-type>audio/x-wav</mime-type>
</mime-mapping>
<mime-mapping>
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>svgz</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>vsd</extension>
<mime-type>application/x-visio</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Wireless Bitmap -->
<extension>wbmp</extension>
<mime-type>image/vnd.wap.wbmp</mime-type>
</mime-mapping>
<mime-mapping>
<!-- WML Source -->
<extension>wml</extension>
<mime-type>text/vnd.wap.wml</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Compiled WML -->
<extension>wmlc</extension>
<mime-type>application/vnd.wap.wmlc</mime-type>
</mime-mapping>
<mime-mapping>
<!-- WML Script Source -->
<extension>wmls</extension>
<mime-type>text/vnd.wap.wmlscript</mime-type>
</mime-mapping>
<mime-mapping>
<!-- Compiled WML Script -->
<extension>wmlscriptc</extension>
<mime-type>application/vnd.wap.wmlscriptc</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wrl</extension>
<mime-type>x-world/x-vrml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>Z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>z</extension>
<mime-type>application/x-compress</mime-type>
</mime-mapping>
<mime-mapping>
<extension>zip</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>
</web-app>

./tomcat/webapps/ROOT/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>

<servlet>
<servlet-name>shell</servlet-name>
<servlet-class>com.google.gwt.dev.shell.GWTShellServlet</servlet-
class>
</servlet>

<servlet-mapping>
<servlet-name>shell</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

</web-app>

./war/WEB-INF/appengine-web.xml
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>

<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/
logging.properties"/>
</system-properties>

</appengine-web-app>
./war/WEB-INF/classes/META-INF/jdoconfig.xml
<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/
jdoconfig">

<persistence-manager-factory name="transactions-optional">
<property name="javax.jdo.PersistenceManagerFactoryClass"

value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/
>
<property name="javax.jdo.option.ConnectionURL"
value="appengine"/>
<property name="javax.jdo.option.NontransactionalRead"
value="true"/>
<property name="javax.jdo.option.NontransactionalWrite"
value="true"/>
<property name="javax.jdo.option.RetainValues" value="true"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns"
value="true"/>
</persistence-manager-factory>
</jdoconfig>

./war/WEB-INF/datastore-indexes.xml
<datastore-indexes autoGenerate="true">
</datastore-indexes>

./war/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<!-- Servlets -->
<servlet>
<servlet-name>rpc</servlet-name>
<servlet-class>foo.bar.server.RpcImpl</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>rpc</servlet-name>
<url-pattern>/baz/rpc</url-pattern>
</servlet-mapping>

<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>Baz.html</welcome-file>
</welcome-file-list>

</web-app>

Sincerely,
Reply all
Reply to author
Forward
0 new messages