[appengine-java] Re: GAE/J with Flex Session

2009-11-18 Thread Yuliang-Yang
when I writing this,I try to re-set the attribute, it works,
at the end of second set the client again.
FlexContext.getFlexSession().setAttribute(client, _session);

2009/11/18 magic.yang zju...@gmail.com

 first request: login by username and pwd, and create the session
 _session = new FbdanciSession();
 _session.setUser(user);
 FlexContext.getFlexSession().setAttribute(client, _session);


 second request: update the _session

 _session = FlexContext.getFlexSession().getAttribute(client);

 _session.setName(I am not null);

FlexContext.getFlexSession().setAttribute(client, _session);


 third request: print the name

 _session = FlexContext.getFlexSession().getAttribute(client);
 System.out.println(_session.getUser());// the reuslt is not null;

 System.out.println(_session.getName());// the reuslt is null;

 I don't know what happened , could anyone help me out;
 advance thanks




-- 
best regards,

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] web.xml version=2.5 is not supported

2009-11-18 Thread Nacho Coloma
Hi all,

I have been trying to use the following web.xml elements in GAE:

jsp-config
jsp-property-group
url-pattern*.jsp/url-pattern
el-ignoredfalse/el-ignored
include-prelude/WEB-INF/taglibs.jspf/include-prelude

deferred-syntax-allowed-as-literaltrue/deferred-syntax-allowed-
as-literal

trim-directive-whitespacestrue/trim-directive-whitespaces
/jsp-property-group
/jsp-config

This instructs the JSP compiler to add some directives at the
beginning of all JSP pages:

* el-ignored: to be able to use ${...} at every page.
* include-prelude: to include a jsp fragment with tag libraries etc at
the beginning.
* deferred-syntax-allowed-as-literal: to ignore the use of #{...}
literals
* trim-directive-whitespaces: to trim the line feeds at the beginning
of each page

The thing is, this is only supported for web.xml 2.5 which I know is
supported by jetty but not by AppEngine. Anyway, I would expect it to
throw an exception instead of ignoring my XML start:

?xml version=1.0 encoding=UTF-8?
web-app xmlns=http://java.sun.com/xml/ns/javaee;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd;
metadata-complete=true version=2.5

The thing is, I don't know if:

* It is planned to be supported by AppEngine at some point.
* I am missing the correct way of configuring this in GAE.
* Just nobody looked at it before.

Comments would be welcome. Best regards,

Nacho.

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: Concurrency In Transaction

2009-11-18 Thread ted stockwell


On Nov 17, 10:27 pm, Rusty Wright rwright.li...@gmail.com wrote:
 Ah, thanks.  So if I knew how many servers my cloud is made of then I should 
 use that number for my MAX_RETRIES.  ;-)

 I'm curious about how others are handling the exceptions.  The 
 JDOCanRetryException is subclassed by other exceptions that don't seem like 
 things I'd want to retry, but perhaps I don't understand the subtleties.  


You are correct, you don't want to retry on any error, only the
'retry' errors.
I would write the retry method something like this...


  public Object retry(final ProceedingJoinPoint pjp) throws Throwable
{
this.log.debug(called);

int retryCount = 0;

while (true) {
JDOException exception = null;

try {
return (pjp.proceed());
}
catch (final JDOCanRetryException ex) {
exception = ex;
// retry
}
catch (final JDOException ex) {

/**
 * to quote Google's documentation: If any action
 * fails due to the requested entity group being in
 * use by another process, JDO throws a
 * JDODataStoreException or a JDOException, caused by
a
 * java.util.ConcurrentModificationException.
 */
if (!(ex.getCause() instanceof
ConcurrentModificationException))
throw ex; // fail

exception = ex;
// retry
}

this.log.debug(retryCount: {}, exception: {},
Integer.valueOf(++retryCount),
ExceptionUtils.getFullStackTrace(exception));
}
}

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




Re: [appengine-java] web.xml version=2.5 is not supported

2009-11-18 Thread Derek Berube
One of the issues that you are going to encounter is the mismatch between
the JSP API defined in GAE and the implementation of that API provided.  As
documented in bug
1506http://code.google.com/p/googleappengine/issues/detail?id=1506,
GAE includes the JSP 2.1 specification (found in the
geronimo-jsp_2.1_spec-1.0.1.jar); however, they provide the Apache Tomcat
Jasper classes from 5.0.28 which implements the 2.0 JSP specification.

If you want to use the 2.1 Unified Expression language, then you're going to
need to download the Unified Expression Language
https://uel.dev.java.net/ 1.1
API 
(el-api-1.1.jarhttp://download.java.net/maven/glassfish/javax/el/el-api/1.1/el-api-1.1.jar)
and Implementation
(el-impl-1.1jarhttp://download.java.net/maven/glassfish/org/glassfish/web/el-impl/1.1/el-impl-1.1.jar)
files and place them in the WEB-INF/lib directory of your web application.
Once that is done, modify your web.xml with the following snippet of code:

!-- GAE Bug 1506 JSP 2.1 API but 2.0 Implementation --
context-param
  param-namecom.sun.faces.expressionFactory/param-name
  param-valuecom.sun.el.ExpressionFactoryImpl/param-value
/context-param

This should make the Unified EL available to your web application.

Derek Berube
Wildstar Technologies, LLC.
1453 Riverview Run Lane
Suwanee, Georgia 30024-3890
M: (404) 444-5283

http://www.wildstartech.com/


On Wed, Nov 18, 2009 at 5:24 AM, Nacho Coloma icol...@gmail.com wrote:

 Hi all,

 I have been trying to use the following web.xml elements in GAE:

jsp-config
jsp-property-group
url-pattern*.jsp/url-pattern
el-ignoredfalse/el-ignored

  include-prelude/WEB-INF/taglibs.jspf/include-prelude

  deferred-syntax-allowed-as-literaltrue/deferred-syntax-allowed-
 as-literal

  trim-directive-whitespacestrue/trim-directive-whitespaces
/jsp-property-group
/jsp-config

 This instructs the JSP compiler to add some directives at the
 beginning of all JSP pages:

 * el-ignored: to be able to use ${...} at every page.
 * include-prelude: to include a jsp fragment with tag libraries etc at
 the beginning.
 * deferred-syntax-allowed-as-literal: to ignore the use of #{...}
 literals
 * trim-directive-whitespaces: to trim the line feeds at the beginning
 of each page

 The thing is, this is only supported for web.xml 2.5 which I know is
 supported by jetty but not by AppEngine. Anyway, I would expect it to
 throw an exception instead of ignoring my XML start:

 ?xml version=1.0 encoding=UTF-8?
 web-app xmlns=http://java.sun.com/xml/ns/javaee;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd;
metadata-complete=true version=2.5

 The thing is, I don't know if:

 * It is planned to be supported by AppEngine at some point.
 * I am missing the correct way of configuring this in GAE.
 * Just nobody looked at it before.

 Comments would be welcome. Best regards,

 Nacho.

 --

 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.




--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




Re: [appengine-java] Configuring JSF 2.0 to run on Google App Engine

2009-11-18 Thread Derek Berube
Denden,

What does your web.xml look like?  What libraries to you have in the
WEB-INF/lib directory of your web application?  Are you trying to use a
component library such as ADF, RichFaces, or ICEFaces?

I have a working version of the JSF2 framework running on GAE posted at
jsf2template.appspot.com.  The source code for this project is available
from Google code at: http://code.google.com/p/jsf2gae/.

Derek Berube
Wildstar Technologies, LLC.
1453 Riverview Run Lane
Suwanee, Georgia 30024-3890
M: (404) 444-5283 .

http://www.wildstartech.com/


On Tue, Nov 17, 2009 at 2:24 AM, Denden Gajudo dgaj...@gmail.com wrote:

 I'm attempting to configure JSF 2.0 to run on Google App Engine using
 the following setup:

 Apache Xalan-J 2.9.0
 Google AppEngine for Java SDK v1.2.5
 Sun Java ServerFaces 2.0 FCS
 Unified Expression Language 1.1 API (el-api-1.1.jar) and
 Implementation (el-impl-1.1jar)

 I followed the procedure indicated in

 http://java.wildstartech.com/Java-Platform-Enterpr...to-run-on-the-google-appengine

 However, I am getting the following errors on startup. I was wondering
 if anyone has experienced this problem.

 WARNING: Failed startup of context
 com.google.apphosting.utils.jetty.devappenginewebappcont...@14b081b
 {/,C:\workspace\JSFTemplate\war}
 com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
 null
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:
 354)
 at com.sun.faces.config.ConfigureListener.contextInitialized
 (ConfigureListener.java:219)
 at org.mortbay.jetty.handler.ContextHandler.startContext
 (ContextHandler.java:530)
 at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
 at org.mortbay.jetty.webapp.WebAppContext.startContext
 (WebAppContext.java:1218)
 at org.mortbay.jetty.handler.ContextHandler.doStart
 (ContextHandler.java:500)
 at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:
 448)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at org.mortbay.jetty.handler.HandlerWrapper.doStart
 (HandlerWrapper.java:117)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at org.mortbay.jetty.handler.HandlerWrapper.doStart
 (HandlerWrapper.java:117)
 at org.mortbay.jetty.Server.doStart(Server.java:217)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at
 com.google.appengine.tools.development.JettyContainerService.startContainer
 (JettyContainerService.java:152)
 at
 com.google.appengine.tools.development.AbstractContainerService.startup
 (AbstractContainerService.java:116)
 at com.google.appengine.tools.development.DevAppServerImpl.start
 (DevAppServerImpl.java:218)
 at com.google.appengine.tools.development.DevAppServerMain
 $StartAction.apply(DevAppServerMain.java:162)
 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.NullPointerException
 at com.sun.faces.util.Util.loadClass(Util.java:200)
 at com.sun.faces.config.processor.AbstractConfigProcessor.loadClass
 (AbstractConfigProcessor.java:312)
 at

 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processHandlerClass
 (FaceletTaglibConfigProcessor.java:416)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags
 (FaceletTaglibConfigProcessor.java:370)
 at

 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary
 (FaceletTaglibConfigProcessor.java:313)
 at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process
 (FaceletTaglibConfigProcessor.java:262)
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:
 337)
 ... 19 more


 Any assistance is much appreciated. Thanks.

 --

 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.




--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




Re: [appengine-java] JDO : setting filter ! MyList.contains(\tag) OR MyList.doesnotcontains(\tag)

2009-11-18 Thread Prashant
Thanks a lot...

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: Spring Web Flow

2009-11-18 Thread Dieter Hubau
Indeed, I have created a similar thread over there:

http://forum.springsource.org/showthread.php?t=80572

If anyone has any clue what could have been wrong, or wants to help me
and wants to see some of the code, let me know!

On Nov 13, 10:08 pm, Rusty Wright rwright.li...@gmail.com wrote:
 Have you tried the Spring forums?  Perhaps your problem is specific to Spring 
 Web Flow and not App Engine.  http://forum.springsource.org/

 DieterHubauwrote:
  I hope some people who know stuff about Spring Web Flow are reading
  this :-)

  On Nov 12, 3:48 pm,DieterHubaudhu...@gmail.com wrote:
  Anyone? If you need extra information, I'm willing to paste more of
  the code here..

  On Nov 12, 10:29 am,DieterHubaudhu...@gmail.com wrote:

  Hi everyone,
  I m having an error using Spring + Spring Web Flow in my java web
  application.
  I have already fixed lots of small problems to get it working, but
  this one I can t figure out.
  The app is:http://toverexpressforever.appspot.com
  When you click on the register button, a new Spring Web Flow is
  started and it takes you to the first view-state of the float, /WEB-
  INF/jsp/subscription/details.jsp
  Then you can continue in the flow, by clicking on one of the two
  links. One leads you to another jsp (WEB-INF/jsp/subscription/
  summary.jsp), the second will lead you back to the homepage /home.do
  The first time when I try this, it always works... But whenever I try
  to go to /subscription.do a second time (or 3rd ,4rd, ...) it fails...
  What am I doing wrong here? He always gives me the error message:
  Error: Not Found
  The requested URL /subscription was not found on this server.
  And in the logs, I see this error message for the /subscription.do
  URL:
  #   1. 11-12 01:27AM 36.070 /subscription 404 1ms 0cpu_ms 0kb Mozilla/
  5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.4) Gecko/20091016
  Firefox/3.5.4 (.NET CLR 3.5.30729),gzip(gfe)
        See details
        ***.***.***.*** - - [12/Nov/2009:01:27:36 -0800] GET /
  subscription HTTP/1.1 404 0 http://toverexpressforever.appspot.com/;
  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.4) Gecko/
  20091016 Firefox/3.5.4 (.NET CLR 3.5.30729),gzip(gfe)
  toverexpressforever.appspot.com
     2.
        W 11-12 01:27AM 36.070
        No handlers matched this URL.
  Anyone know what I'm doing wrong here? On a local Tomcat server (in
  Eclipse) it works, as well as with the Eclipse plugin server (by doing
  Run As - Web Application)...
  Any help is greatly appreciated!!
  Kind regards,
 DieterH

  --

  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 google-appengine-j...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine-java+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://groups.google.com/group/google-appengine-java?hl=.

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: Exception When Uploading Application To AppEngine

2009-11-18 Thread gholler

I'm seeing the same thing here. All of a sudden I can't deploy to the
cloud. I'm using gae 1.2.2, and I'm getting the exact same error.  The
only thing that may have an effect is that I had someone else on my
team deploy to the same account (different app id), since then I
haven't been able to deploy. I can't believe that you can't have more
than one person ever deploy to an account. Any guidance would be
appreciated. Thanks.

G

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Reading from the database

2009-11-18 Thread teboho
Hi

How do i read items in the database in order to display that data to
the user per say?

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: Session handleing example

2009-11-18 Thread Obelix
Ikai

Even this basic page scope isn't working for me.

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
req.setAttribute(helloWorld, Testing);
 RequestDispatcher dispatcher =
 req.getRequestDispatcher(/helloworld.jsp);
 dispatcher.forward(req, resp);
}

%@ page isELIgnored=false %

body

Hello world

% String str = (String) session.getAttribute(helloWorld);  %

  h1${helloWorld}/h1

/body

The value for ${helloWorld} is null.

I am testing this through eclipse.

Google App Engine Java SDK 1.2.6
Google Web Toolkit SDK 1.7.1
Google Plugin for Eclipse 3.5

I am running this on mac (snow leopard).

java version 1.6.0_15
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)


On Nov 10, 10:36 am, Ikai L (Google) ika...@google.com wrote:
 Ilya,

 Are you looking to persist objects for a lifetime of a session, or are you
 looking to minimize the logic you are using in your JSPs?
 As a general design principle, we recommend that you minimize usage of
 session scope. Variables bound to session scope are serialized and stored to
 distributed memory, and as a result, it will work best if you use it to pass
 around small, simple, immutable objects.

 If you're looking to pass a variable to a view, Java Servlets have a concept
 of page scope as well as session scope. You don't need to store a variable
 in session scope if you just want to dispatch the request to a JSP. For
 instance, you can define a Servlet that looks like this:

 public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse
 response) throws ServletException, IOException {
      String myVar = this is a string that will be passed to the JSP;
      request.setAttribute(myVar, myVar);
      RequestDispatcher dispatcher =
 request.getRequestDispatcher(/WEB-INF/my.jsp);

      dispatcher.forward(request, response);

    }

 }

 In my.jsp, you can now refer to this variable:

 %@ page isELIgnored=false %
 body
   h1${myVar}/h1
 /body

 Ikai Lan
 Developer Programs Engineer, Google App Engine

 On Tue, Nov 10, 2009 at 2:39 PM, IlyaE ilyaelk...@gmail.com wrote:

  Well as i found out, session attributes don't always guarantee that
  they are sent back to the same JVM thus i keep getting null objects in
  my view. While i saw a similar discussion before the only examples i
  found were for Python. I'm looking for a simple java example that
  saves an object in the servlet and retrieves it in the jsp.

  On Nov 9, 5:44 pm, victor victoraco...@gmail.com wrote:
   What issue are you encountering?

   When you make changes to a session object state, make sure to
   explicitly call the session.setAttribute(you session ID, you
   modified session state object) again.

   i think there is an issue discussed about this before.

   On Nov 9, 10:58 am, IlyaE ilyaelk...@gmail.com wrote:

Does anyone have a java session handleing example? It seems that
saving objects in the session only works locally.

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: Configuring JSF 2.0 to run on Google App Engine

2009-11-18 Thread andyz
Denden,
I have same problem.
the root cause is the version of Mojarra2.0.0
if you open jsf-impl.jar,
there is a file: META/taglib/ui.taglib.xml
notice the tag remove
tag-nameremove/tag-name
handler-class/handler-class
handler-class is NOT defined.
this would cause a problem and throw NPE.

change the jsf2 libraries from mojarra 2.0.1

everything is OK.

Andy

On Nov 17, 2:24 am, Denden Gajudo dgaj...@gmail.com wrote:
 I'm attempting to configure JSF 2.0 to run on Google App Engine using
 the following setup:

 Apache Xalan-J 2.9.0
 Google AppEngine for Java SDK v1.2.5
 Sun Java ServerFaces 2.0 FCS
 Unified Expression Language 1.1 API (el-api-1.1.jar) and
 Implementation (el-impl-1.1jar)

 I followed the procedure indicated 
 inhttp://java.wildstartech.com/Java-Platform-Enterpr...to-run-on-the-go...

 However, I am getting the following errors on startup. I was wondering
 if anyone has experienced this problem.

 WARNING: Failed startup of context
 com.google.apphosting.utils.jetty.devappenginewebappcont...@14b081b
 {/,C:\workspace\JSFTemplate\war}
 com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
 null
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:
 354)
 at com.sun.faces.config.ConfigureListener.contextInitialized
 (ConfigureListener.java:219)
 at org.mortbay.jetty.handler.ContextHandler.startContext
 (ContextHandler.java:530)
 at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
 at org.mortbay.jetty.webapp.WebAppContext.startContext
 (WebAppContext.java:1218)
 at org.mortbay.jetty.handler.ContextHandler.doStart
 (ContextHandler.java:500)
 at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:
 448)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at org.mortbay.jetty.handler.HandlerWrapper.doStart
 (HandlerWrapper.java:117)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at org.mortbay.jetty.handler.HandlerWrapper.doStart
 (HandlerWrapper.java:117)
 at org.mortbay.jetty.Server.doStart(Server.java:217)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at
 com.google.appengine.tools.development.JettyContainerService.startContainer
 (JettyContainerService.java:152)
 at
 com.google.appengine.tools.development.AbstractContainerService.startup
 (AbstractContainerService.java:116)
 at com.google.appengine.tools.development.DevAppServerImpl.start
 (DevAppServerImpl.java:218)
 at com.google.appengine.tools.development.DevAppServerMain
 $StartAction.apply(DevAppServerMain.java:162)
 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.NullPointerException
 at com.sun.faces.util.Util.loadClass(Util.java:200)
 at com.sun.faces.config.processor.AbstractConfigProcessor.loadClass
 (AbstractConfigProcessor.java:312)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processHandlerClass
 (FaceletTaglibConfigProcessor.java:416)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags
 (FaceletTaglibConfigProcessor.java:370)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary
 (FaceletTaglibConfigProcessor.java:313)
 at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process
 (FaceletTaglibConfigProcessor.java:262)
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:
 337)
 ... 19 more

 Any assistance is much appreciated. Thanks.

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




[appengine-java] Re: Configuring JSF 2.0 to run on Google App Engine

2009-11-18 Thread andyz
Denden,
I have the same problem as you.
I found the root cause.
The library jsf-impl.jar you(and I ) is in downloaded zip file:
mojarra-2.0.0-FCS-binary.zip.
if you open jsf-impl.jar, there is a file: META-INF/taglib/
ui.taglib.xml.
at the end of this file:
tag-nameremove/tag-name
handler-class/handler-class
 handler-class is NOT defined,this causes a problem and throw NPE

Once I replaced with mojarra-2.0.1,
then It's OK.

Andy
On Nov 17, 2:24 am, Denden Gajudo dgaj...@gmail.com wrote:
 I'm attempting to configure JSF 2.0 to run on Google App Engine using
 the following setup:

 Apache Xalan-J 2.9.0
 Google AppEngine for Java SDK v1.2.5
 Sun Java ServerFaces 2.0 FCS
 Unified Expression Language 1.1 API (el-api-1.1.jar) and
 Implementation (el-impl-1.1jar)

 I followed the procedure indicated 
 inhttp://java.wildstartech.com/Java-Platform-Enterpr...to-run-on-the-go...

 However, I am getting the following errors on startup. I was wondering
 if anyone has experienced this problem.

 WARNING: Failed startup of context
 com.google.apphosting.utils.jetty.devappenginewebappcont...@14b081b
 {/,C:\workspace\JSFTemplate\war}
 com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED!
 null
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:
 354)
 at com.sun.faces.config.ConfigureListener.contextInitialized
 (ConfigureListener.java:219)
 at org.mortbay.jetty.handler.ContextHandler.startContext
 (ContextHandler.java:530)
 at org.mortbay.jetty.servlet.Context.startContext(Context.java:135)
 at org.mortbay.jetty.webapp.WebAppContext.startContext
 (WebAppContext.java:1218)
 at org.mortbay.jetty.handler.ContextHandler.doStart
 (ContextHandler.java:500)
 at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:
 448)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at org.mortbay.jetty.handler.HandlerWrapper.doStart
 (HandlerWrapper.java:117)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at org.mortbay.jetty.handler.HandlerWrapper.doStart
 (HandlerWrapper.java:117)
 at org.mortbay.jetty.Server.doStart(Server.java:217)
 at org.mortbay.component.AbstractLifeCycle.start
 (AbstractLifeCycle.java:40)
 at
 com.google.appengine.tools.development.JettyContainerService.startContainer
 (JettyContainerService.java:152)
 at
 com.google.appengine.tools.development.AbstractContainerService.startup
 (AbstractContainerService.java:116)
 at com.google.appengine.tools.development.DevAppServerImpl.start
 (DevAppServerImpl.java:218)
 at com.google.appengine.tools.development.DevAppServerMain
 $StartAction.apply(DevAppServerMain.java:162)
 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.NullPointerException
 at com.sun.faces.util.Util.loadClass(Util.java:200)
 at com.sun.faces.config.processor.AbstractConfigProcessor.loadClass
 (AbstractConfigProcessor.java:312)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processHandlerClass
 (FaceletTaglibConfigProcessor.java:416)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags
 (FaceletTaglibConfigProcessor.java:370)
 at
 com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary
 (FaceletTaglibConfigProcessor.java:313)
 at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process
 (FaceletTaglibConfigProcessor.java:262)
 at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:
 337)
 ... 19 more

 Any assistance is much appreciated. Thanks.

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




[appengine-java] Re: NullPointer on key

2009-11-18 Thread IlyaE
Running into another issue. So i'm detaching my object and passing it
along in a session.

I'm now getting this error WARNING:
javax.jdo.JDODetachedFieldAccessException: You have just attempted to
access field contactInfo yet this field was not detached when you
detached the object. Either dont access this field, or detach it when
detaching the object.

my contactInfo is an embedded persistent object in the object i am
detaching.
@Embedded
@Persistent
private ContactInfo contactInfo;

If i make contactInfo @Persistent(defaultFetchGroup=true) then i get
this error.
WARNING: The datastore does not support joins and therefore cannot
honor requests to place child objects in the default fetch group.  The
field will be fetched lazily on first access.  You can modify this
warning by setting the datanucleus.appengine.ignorableMetaDataBehavior
property in your config.  A value of NONE will silence the warning.  A
value of ERROR will turn the warning into an exception.

What is the correct way of making sure this embedded object is also
detached when i save it to the session?

On Nov 14, 6:37 am, datanucleus andy_jeffer...@yahoo.com wrote:
 What state is the object in when you access its field ? (Call
 JDOHelper.getObjectState(obj)).
 Since no transaction boundaries or PM lifecycle is presented, it's
 hard to guess. If you leave the object to become transient then it
 will likely have its field values nulled when leaving the transaction/
 PM (unless you bothered setting javax.jdo.option.RetainValues)

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




Re: [appengine-java] Re: Time zones implementation is broken in Java AppEngine

2009-11-18 Thread Alexander Kolesnikov
Issue 2330 - still nothing is done about this.

On Tue, Oct 27, 2009 at 6:55 PM, Jason (Google) apija...@google.com wrote:

 At the very least, the local and production environments should have
 identical behavior, and I agree that App Engine should not be returning GMT
 for well-established time zones. Please file a new issue in the tracker:

 http://code.google.com/p/googleappengine/issues/list

 - Jason


 On Sat, Oct 24, 2009 at 10:14 AM, Alexander Kolesnikov 
 otry.it...@gmail.com wrote:

 I have just found that, while everything works fine locally, the real
 AppEngine returns GMT for most time zones. I wonder if this is going to be
 fixed. Below see the local output and then the one I am having after
 uploading the app.

 Thanks,

 Alex

 LOCAL:

 Asia/Aden3false0Arabia Standard Time
 Asia/Almaty6false0Alma-Ata Time
 Asia/Amman3true1Eastern European Time
 Asia/Anadyr12false1Anadyr Time
 Asia/Aqtau5false0Aqtau Time
 Asia/Aqtobe5false0Aqtobe Time
 Asia/Ashgabat5false0Turkmenistan Time
 Asia/Ashkhabad5false0Turkmenistan Time
 Asia/Baghdad3false0Arabia Standard Time
 Asia/Bahrain3false0Arabia Standard Time
 Asia/Baku5true1Azerbaijan Time
 Asia/Bangkok7false0Indochina Time

 ONLINE:

 Asia/Aden3false0Arabia Standard Time
 Asia/Almaty0false0Greenwich Mean Time
 Asia/Amman0false0Greenwich Mean Time
 Asia/Anadyr0false0Greenwich Mean Time
 Asia/Aqtau0false0Greenwich Mean Time
 Asia/Aqtobe0false0Greenwich Mean Time
 Asia/Ashgabat0false0Greenwich Mean Time
 Asia/Ashkhabad0false0Greenwich Mean Time
 Asia/Baghdad0false0Greenwich Mean Time
 Asia/Bahrain0false0Greenwich Mean Time
 Asia/Baku5true1Azerbaijan Time
 Asia/Bangkok0false0Greenwich Mean Time




 --~--~-~--~~~---~--~~
 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
 google-appengine-java@googlegroups.com
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=en
 -~--~~~~--~~--~--~---



--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




[appengine-java] Re: Cannot retrieve value of the newly created attribute in a JDO

2009-11-18 Thread joedev
Would you share the solution with us? please

On Nov 7, 3:59 am, delightwjk delight@gmail.com wrote:
 I have fixed this problem. Thanks.

 On Nov 6, 11:05 am, delightwjk delight@gmail.com wrote:

  Thank you Jorge,

  I checked the document you mentioned, but i'm still not sure what is
  the reason of my issue. I added a field in JDO (Boolean successFlag),
  and stored several entities in datastore, I was able to see the
  entities with successFlag property from admin console Datastore -
  Data Viewer, and the values of successFlag properties were correct.
  The entities have the property successFlag with correct value, and the
  JDO class has the corresponding field, but why I could not retrieve
  the values of successFlag via JDO?

  Jiakuan

  On Nov 5, 9:57 pm, Jorge athenas...@gmail.com wrote:

   You may want to check the rules that apply in this case as documented
   at the bottom of this page::
      http://code.google.com/appengine/docs/java/datastore/dataclasses.html

   Jorge Gonzalez

   On Nov 4, 8:06 am, delightwjk delight@gmail.com wrote:

Hi All,

I created a JDO class, which had some attributes, and I created some
CRUD operations, all of them worked correctly.

Then I added a new attribute in the JDO class, and then set value to
it and persisted it as usual when I executed CRUD operations. The
problem is that I cannot retrieve the value of the new attribute in
program, the value is always null. But when I check the value in
Datastore - Data Viewer, the value is correct. So i'm wondering
why it cannot be retrieved in application. Is there some cache
mechanism?

Thanks in advance!
Jiakuan

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




[appengine-java] Re: Xalan

2009-11-18 Thread metamesh
Hi,

I have the same problem when using the xml tags of jstl with appengine
1.2.6.

I also tried to put the missing class into the WEB-INF/classes/...
folder but still no success.

Note that
http://code.google.com/p/googleappengine/issues/detail?id=2180
has not a fix but only verifies that the class
org.apache.xpath.VariableStack is available at compile time but not at
run time.

Regards,
Stephan


On Oct 5, 7:18 pm, Jason (Google) apija...@google.com wrote:
 Can you confirm that the tip 
 inhttp://code.google.com/p/googleappengine/issues/detail?id=2180(see the
 second comment) works for you?

 - Jason

 On Wed, Sep 30, 2009 at 9:17 AM, Maniacs sony.trico...@gmail.com wrote:

  I tried to use JSTL xml tags and I got the following
  exception :java.lang.NoClassDefFoundError: org/apache/xpath/
  VariableStack

  However, I put in WEB-INF/lib the file xalan.jar.

  Is xalan incompatible with app-engine ?

  Regards

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




Re: [appengine-java] 500 Internal Server Error, when update appl

2009-11-18 Thread Ikai L (Google)
What is your app ID? Can you also provide the following details:

- application ID
- SDK version. Also include whether it is Python or Java
- Operating System
- Whether this is the first push or not
- Are you behind a proxy?

As much information as you can give me would be helpful.

On Mon, Nov 16, 2009 at 10:25 PM, Jackob jrozn...@gmail.com wrote:

 The problem is not fixed , i can't upload update.
 The happened only with my account?


 On Mon, Nov 16, 2009 at 11:59 PM, Ikai L (Google) ika...@google.comwrote:

 Have you been able to update this application?

 On Wed, Nov 11, 2009 at 11:53 PM, Jackroz jrozn...@gmail.com wrote:

 Hi Team,

 Last two day i can't update  appl, what is wrong?

 Please see detail log:

 Unable to update:
 java.io.IOException: Error posting to URL:

 http://appengine.google.com/api/appversion/cloneblobs?app_id=aapcoreversion=2;
 500 Internal Server Error

 Server Error (500)
 A server error has occurred.

at com.google.appengine.tools.admin.ServerConnection.send
 (ServerConnection.java:143)
at com.google.appengine.tools.admin.ServerConnection.post
 (ServerConnection.java:81)
at com.google.appengine.tools.admin.AppVersionUpload.send
 (AppVersionUpload.java:427)
at com.google.appengine.tools.admin.AppVersionUpload.cloneFiles
 (AppVersionUpload.java:293)
at
 com.google.appengine.tools.admin.AppVersionUpload.beginTransaction
 (AppVersionUpload.java:255)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload
 (AppVersionUpload.java:98)
at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:56)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute
 (AppCfg.java:521)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:130)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:58)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:54)
 com.google.appengine.tools.admin.AdminException: Unable to update app:
 Error posting to URL:
 http://appengine.google.com/api/appversion/cloneblobs?app_id=aapcoreversion=2;
 500 Internal Server Error

 Server Error (500)
 A server error has occurred.

at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:62)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute
 (AppCfg.java:521)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:130)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:58)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:54)
 Caused by: java.io.IOException: Error posting to URL:

 http://appengine.google.com/api/appversion/cloneblobs?app_id=aapcoreversion=2;
 500 Internal Server Error

 Server Error (500)
 A server error has occurred.

at com.google.appengine.tools.admin.ServerConnection.send
 (ServerConnection.java:143)
at com.google.appengine.tools.admin.ServerConnection.post
 (ServerConnection.java:81)
at com.google.appengine.tools.admin.AppVersionUpload.send
 (AppVersionUpload.java:427)
at com.google.appengine.tools.admin.AppVersionUpload.cloneFiles
 (AppVersionUpload.java:293)
at
 com.google.appengine.tools.admin.AppVersionUpload.beginTransaction
 (AppVersionUpload.java:255)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload
 (AppVersionUpload.java:98)
at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:56)
... 4 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.





 --
 Ikai Lan
 Developer Programs Engineer, Google App Engine

 --
 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.




 --
 Best regards,
 Yakov Liskoff

 Mobile: 972-54-4512963
 Email: jrozn...@gmail.com
 Web:  http://www.vcomm.co.nr
 IM: jackobl (Skype)

 -
 The contents of this email and any attachments are confidential.
 It is intended for the named recipient(s) only.
 -

  --
 You received this message because you are subscribed to the Google Groups
 Google App Engine for Java group.
 To post to this group, send 

Re: [appengine-java] Re: Session handleing example

2009-11-18 Thread Ikai L (Google)
Doyou see these issues locally or when deployed?

On Tue, Nov 17, 2009 at 9:03 PM, Obelix anand.sanka...@gmail.com wrote:

 Ikai

 Even this basic page scope isn't working for me.

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException, ServletException {
req.setAttribute(helloWorld, Testing);
 RequestDispatcher dispatcher =
 req.getRequestDispatcher(/helloworld.jsp);
 dispatcher.forward(req, resp);
}

 %@ page isELIgnored=false %

 body

 Hello world

 % String str = (String) session.getAttribute(helloWorld);  %

  h1${helloWorld}/h1

 /body

 The value for ${helloWorld} is null.

 I am testing this through eclipse.

 Google App Engine Java SDK 1.2.6
 Google Web Toolkit SDK 1.7.1
 Google Plugin for Eclipse 3.5

 I am running this on mac (snow leopard).

 java version 1.6.0_15
 Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
 Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)


 On Nov 10, 10:36 am, Ikai L (Google) ika...@google.com wrote:
  Ilya,
 
  Are you looking to persist objects for a lifetime of a session, or are
 you
  looking to minimize the logic you are using in your JSPs?
  As a general design principle, we recommend that you minimize usage of
  session scope. Variables bound to session scope are serialized and stored
 to
  distributed memory, and as a result, it will work best if you use it to
 pass
  around small, simple, immutable objects.
 
  If you're looking to pass a variable to a view, Java Servlets have a
 concept
  of page scope as well as session scope. You don't need to store a
 variable
  in session scope if you just want to dispatch the request to a JSP. For
  instance, you can define a Servlet that looks like this:
 
  public class MyServlet extends HttpServlet {
 
 protected void doGet(HttpServletRequest request, HttpServletResponse
  response) throws ServletException, IOException {
   String myVar = this is a string that will be passed to the JSP;
   request.setAttribute(myVar, myVar);
   RequestDispatcher dispatcher =
  request.getRequestDispatcher(/WEB-INF/my.jsp);
 
   dispatcher.forward(request, response);
 
 }
 
  }
 
  In my.jsp, you can now refer to this variable:
 
  %@ page isELIgnored=false %
  body
h1${myVar}/h1
  /body
 
  Ikai Lan
  Developer Programs Engineer, Google App Engine
 
  On Tue, Nov 10, 2009 at 2:39 PM, IlyaE ilyaelk...@gmail.com wrote:
 
   Well as i found out, session attributes don't always guarantee that
   they are sent back to the same JVM thus i keep getting null objects in
   my view. While i saw a similar discussion before the only examples i
   found were for Python. I'm looking for a simple java example that
   saves an object in the servlet and retrieves it in the jsp.
 
   On Nov 9, 5:44 pm, victor victoraco...@gmail.com wrote:
What issue are you encountering?
 
When you make changes to a session object state, make sure to
explicitly call the session.setAttribute(you session ID, you
modified session state object) again.
 
i think there is an issue discussed about this before.
 
On Nov 9, 10:58 am, IlyaE ilyaelk...@gmail.com wrote:
 
 Does anyone have a java session handleing example? It seems that
 saving objects in the session only works locally.

 --

 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.





-- 
Ikai Lan
Developer Programs Engineer, Google App Engine

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.




[appengine-java] Re: Can't send mail with attachment using JavaMail API

2009-11-18 Thread mably
I'm just sending a simple mail from my Gmail account with an embedded
gif image.

I can perfectly read it from my mail servlet handler but when I try to
relay it (cf. code from first message) I get this annoying Converting
attachment data failed error which seems to be specific to GAE.

Here is the mail sent data :


MIME-Version: 1.0
Sender: x...@gmail.com
Received: by 10.142.204.15 with HTTP; Wed, 18 Nov 2009 13:57:20 -0800
(PST)
Date: Wed, 18 Nov 2009 22:57:20 +0100
Delivered-To: x...@gmail.com
X-Google-Sender-Auth: c9f34852bdb4f249
Message-ID:
75c1488c0911181357w4e8efdc2r7e82d8e1c3e03...@mail.gmail.com
Subject: Test
From: Francois MASUREL x...@mably.com
To: contact-test contact-t...@webwinewatch.appspotmail.com
Content-Type: multipart/related; boundary=001636e90e61aa516e0478ac5398

--001636e90e61aa516e0478ac5398
Content-Type: multipart/alternative;
boundary=001636e90e61aa516b0478ac5397

--001636e90e61aa516b0478ac5397
Content-Type: text/plain; charset=UTF-8

[image:
?
ui=2view=attth=125094c9bff3199battid=0.1disp=attdrealattid=ii_125094c9bff3199bzw]

--001636e90e61aa516b0478ac5397
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

img title=3D?
ui=3D2amp;view=3Dattamp;th=3D125094c9bff3199bamp;attid=3D=
0.1amp;disp=3Dattdamp;realattid=3Dii_125094c9bff3199bamp;zw
alt=3D?ui=
=3D2amp;view=3Dattamp;th=3D125094c9bff3199bamp;attid=3D0.1amp;disp=3Dat=
tdamp;realattid=3Dii_125094c9bff3199bamp;zw
src=3Dcid:ii_125094c9bff319=
9bbr
br

--001636e90e61aa516b0478ac5397--
--001636e90e61aa516e0478ac5398
Content-Type: image/gif; name=enveloppe.gif
Content-Transfer-Encoding: base64
Content-ID: ii_125094c9bff3199b
X-Attachment-Id: ii_125094c9bff3199b

R0lGODlhEAAQAPeYAP39/tHR5MrK4fLy99PT6NfX6Nvb6/
f3+ff3+uDg7sPD3fHx9ra206qqyrKy
0eLi8Onp8bCwz
+jo8cvL4WVlm7y81cLC2fPz96ysyrCwzcXF3c7O487O4tDQ5Le30+fn8cvL4ufn
8PDw9/Ly+fDw9PLy+N7e66Skx8/
P46mpymBglNLS5KKixoWFsYaGs56ewNXV5pqawKyszuTk7pyc
wdra6Pr6/
Ht7qnt7qXl5qry82LGx0MbG3pCQsrOz0qyszZubucjI3eLi7eDg6eDg7X5+rJSUu9zc
54uLtvz8/b+/2KenyPX1+K6uzpmZwOvr9a6uz8XF3Ovr9tLS5uPj8Hx8qvv7/
ZiYwLm50NPT5tjY
6K+v0M7O5IGBqtzc68/
P3mpqnoeHsLCwynJypNjY60ZGgJ2dw1hYjc7O4bi40nh4qWlpnNjY5fn5
+5SUvcTE2oCAqbOz0Le31tzc7L292vj4+sPD2by81unp8s/P5s3N3fPz
+VxckqOjyHZ2psLC23p6
pt3d7d7e7PDw+L292JOTu/z8/Kury7Ozyra20ubm8MTE1/b2/Pn5/
Hd3qJCQvOnp876+2tHR5tHR
4oaGrbW10pmZv/7+/v///
wAA




ACH5BAEAAJgALAAQABAA
AAjlADEJHCiwzSQjamYQXIjAAo0fAq5gWChwgB03PiBdkhDkxgKCITywiLLn0qUkU2A4ESPQRKIm
K5iYNIlHCREefg5gMjNBBICZAKx4SUGlQA4smOJw
+BAAjaJLABh1aBCITJ8uNmrIuDRAS4Uldwyk
OZQFhQIKXxCcEGLSkCBLOKowoKNDARJKmN5AMQmghIBIEfKAICTnURlMFwotuNQogYYHcwJsYDDm
DCKBGXZcGiQpgIECf1zwAUJiIIQWI6RwSUAghooeQyi
+cPCEwBYwcI5QFMimSCVHgPTsHlgnzJpF
OncHBAA7
--001636e90e61aa516e0478ac5398--

On Nov 18, 10:34 pm, Ikai L (Google) ika...@google.com wrote:
 François,

 I'm not familiar with any standards with regard to inline images. Do you
 have this working outside of App Engine? Do you have working code from that?
 If there are discrepancies in our implementation of javax.mail.* and
 standard implementations we should be aware.

 On Mon, Nov 16, 2009 at 10:30 PM, mably fm2...@mably.com wrote:
  In fact standards attachments works.

  But it's not what I'm trying do do.

  I'm need to relay HTML messages with inline images and this is still
  not working.

  Is it a kind of limitation of GAE or is it supposed to work ?

  Thanx for your help.

  François

  On 16 nov, 23:09, mably fm2...@mably.com wrote:
   Hi Ikai, thanx for you help.

   I've copy pasted your code on my webapp (webwinewatch), I've no error
   but the mail isn't correctly relayed, all attachements are removed.

   I've just modified the sender, from and recipient lines :

   message.setSender(new InternetAddress(myaddress@gmail.com, Relay
   account));
   message.setFrom(message.getSender());
   message.setRecipient(Message.RecipientType.TO, message.getSender());

   Do you have any clue ?

   You can test it, sending an email to : contact-
   t...@webwinewatch.appspotmail.com

   Thanx again for your help.

   On 16 nov, 21:35, Ikai L (Google) ika...@google.com wrote:

I couldn't reproduce your exact error, but I was able to put together a
working example of an inbound email handler to relay messages. I'm
  going to
expand the documentation about processing inbound emails. Here's some
working code:http://pastie.org/701517

Does this example help any? Code is also pasted below, but it'll be
  easier
for you to look at the Pastie.

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

Re: [appengine-java] Re: Can't send mail with attachment using JavaMail API

2009-11-18 Thread Ikai L (Google)
What I mean is, is this code working on a different mail server?

On Wed, Nov 18, 2009 at 2:00 PM, mably fm2...@mably.com wrote:

 I'm just sending a simple mail from my Gmail account with an embedded
 gif image.

 I can perfectly read it from my mail servlet handler but when I try to
 relay it (cf. code from first message) I get this annoying Converting
 attachment data failed error which seems to be specific to GAE.

 Here is the mail sent data :


 MIME-Version: 1.0
 Sender: x...@gmail.com
 Received: by 10.142.204.15 with HTTP; Wed, 18 Nov 2009 13:57:20 -0800
 (PST)
 Date: Wed, 18 Nov 2009 22:57:20 +0100
 Delivered-To: x...@gmail.com
 X-Google-Sender-Auth: c9f34852bdb4f249
 Message-ID:
 75c1488c0911181357w4e8efdc2r7e82d8e1c3e03...@mail.gmail.com
 Subject: Test
 From: Francois MASUREL x...@mably.com
 To: contact-test contact-t...@webwinewatch.appspotmail.com
 Content-Type: multipart/related; boundary=001636e90e61aa516e0478ac5398

 --001636e90e61aa516e0478ac5398
 Content-Type: multipart/alternative;
 boundary=001636e90e61aa516b0478ac5397

 --001636e90e61aa516b0478ac5397
 Content-Type: text/plain; charset=UTF-8

 [image:
 ?

 ui=2view=attth=125094c9bff3199battid=0.1disp=attdrealattid=ii_125094c9bff3199bzw]

 --001636e90e61aa516b0478ac5397
 Content-Type: text/html; charset=UTF-8
 Content-Transfer-Encoding: quoted-printable

 img title=3D?
 ui=3D2amp;view=3Dattamp;th=3D125094c9bff3199bamp;attid=3D=
 0.1amp;disp=3Dattdamp;realattid=3Dii_125094c9bff3199bamp;zw
 alt=3D?ui=

 =3D2amp;view=3Dattamp;th=3D125094c9bff3199bamp;attid=3D0.1amp;disp=3Dat=
 tdamp;realattid=3Dii_125094c9bff3199bamp;zw
 src=3Dcid:ii_125094c9bff319=
 9bbr
 br

 --001636e90e61aa516b0478ac5397--
 --001636e90e61aa516e0478ac5398
 Content-Type: image/gif; name=enveloppe.gif
 Content-Transfer-Encoding: base64
 Content-ID: ii_125094c9bff3199b
 X-Attachment-Id: ii_125094c9bff3199b

 R0lGODlhEAAQAPeYAP39/tHR5MrK4fLy99PT6NfX6Nvb6/
 f3+ff3+uDg7sPD3fHx9ra206qqyrKy
 0eLi8Onp8bCwz
 +jo8cvL4WVlm7y81cLC2fPz96ysyrCwzcXF3c7O487O4tDQ5Le30+fn8cvL4ufn
 8PDw9/Ly+fDw9PLy+N7e66Skx8/
 P46mpymBglNLS5KKixoWFsYaGs56ewNXV5pqawKyszuTk7pyc
 wdra6Pr6/
 Ht7qnt7qXl5qry82LGx0MbG3pCQsrOz0qyszZubucjI3eLi7eDg6eDg7X5+rJSUu9zc
 54uLtvz8/b+/2KenyPX1+K6uzpmZwOvr9a6uz8XF3Ovr9tLS5uPj8Hx8qvv7/
 ZiYwLm50NPT5tjY
 6K+v0M7O5IGBqtzc68/
 P3mpqnoeHsLCwynJypNjY60ZGgJ2dw1hYjc7O4bi40nh4qWlpnNjY5fn5
 +5SUvcTE2oCAqbOz0Le31tzc7L292vj4+sPD2by81unp8s/P5s3N3fPz
 +VxckqOjyHZ2psLC23p6
 pt3d7d7e7PDw+L292JOTu/z8/Kury7Ozyra20ubm8MTE1/b2/Pn5/
 Hd3qJCQvOnp876+2tHR5tHR
 4oaGrbW10pmZv/7+/v///
 wAA

 

 

 

 

 ACH5BAEAAJgALAAQABAA

 AAjlADEJHCiwzSQjamYQXIjAAo0fAq5gWChwgB03PiBdkhDkxgKCITywiLLn0qUkU2A4ESPQRKIm
 K5iYNIlHCREefg5gMjNBBICZAKx4SUGlQA4smOJw
 +BAAjaJLABh1aBCITJ8uNmrIuDRAS4Uldwyk

 OZQFhQIKXxCcEGLSkCBLOKowoKNDARJKmN5AMQmghIBIEfKAICTnURlMFwotuNQogYYHcwJsYDDm
 DCKBGXZcGiQpgIECf1zwAUJiIIQWI6RwSUAghooeQyi
 +cPCEwBYwcI5QFMimSCVHgPTsHlgnzJpF
 OncHBAA7
 --001636e90e61aa516e0478ac5398--

 On Nov 18, 10:34 pm, Ikai L (Google) ika...@google.com wrote:
  François,
 
  I'm not familiar with any standards with regard to inline images. Do you
  have this working outside of App Engine? Do you have working code from
 that?
  If there are discrepancies in our implementation of javax.mail.* and
  standard implementations we should be aware.
 
  On Mon, Nov 16, 2009 at 10:30 PM, mably fm2...@mably.com wrote:
   In fact standards attachments works.
 
   But it's not what I'm trying do do.
 
   I'm need to relay HTML messages with inline images and this is still
   not working.
 
   Is it a kind of limitation of GAE or is it supposed to work ?
 
   Thanx for your help.
 
   François
 
   On 16 nov, 23:09, mably fm2...@mably.com wrote:
Hi Ikai, thanx for you help.
 
I've copy pasted your code on my webapp (webwinewatch), I've no error
but the mail isn't correctly relayed, all attachements are removed.
 
I've just modified the sender, from and recipient lines :
 
message.setSender(new InternetAddress(myaddress@gmail.com,
 Relay
account));
message.setFrom(message.getSender());
message.setRecipient(Message.RecipientType.TO, message.getSender());
 
Do you have any clue ?
 
You can test it, sending an email to : contact-
t...@webwinewatch.appspotmail.com
 
Thanx again for your help.
 
On 16 nov, 21:35, Ikai L (Google) ika...@google.com wrote:
 
 I couldn't reproduce your exact error, but I was able to put
 together a
 working example of an inbound email handler to relay messages. I'm
   going to
 expand the documentation about processing inbound emails. Here's

[appengine-java] Re: Looking for Bulk Loader beta testers

2009-11-18 Thread Matthew Blain
Hi everyone,
Thanks for the response so far--we'll be getting back to you over the next
few days.
I'd like to point out an existing feature which will be helpful to many of
you: --dump and --restore. This will download or upload all of
the entities for a particular Kind and save them in a local sqlite database.
It's useful for general backup (e.g. a weekly backup), and also useful for
moving data across applications, such as between your app running on the
dev_appserver and on App Engine, or to load a staging instance with a known
set of test data.

You can find more information here:
http://code.google.com/appengine/docs/python/tools/uploadingdata.html#Downloading_and_Uploading_All_Data

Also, for Java developers, there is a remote API handler available; adding
following to your web xml file should work (disclaimer: I have not yet
personally tested this.)

servlet
  servlet-nameremoteapi/servlet-name
  
servlet-classcom.google.apphosting.utils.remoteapi.RemoteApiServlet/servlet-class
/servlet
servlet-mapping
  servlet-nameremoteapi/servlet-name
  url-pattern/remote_api/url-pattern
/servlet-mapping
security-constraint
  web-resource-collection
web-resource-nameremoteapi/web-resource-name
url-pattern/remote_api/url-pattern
  /web-resource-collection
  auth-constraint
role-nameadmin/role-name
  /auth-constraint
/security-constraint

--Matthew

On Tue, Nov 17, 2009 at 12:53 PM, Matthew Blain matthew.bl...@google.comwrote:

 Hi App Engine developers,
 We're working on some improvements and additions to the bulk loader to
 make it easier to move data between the App Engine Datastore and other
 data files you may have. If you're doing this right now, we're looking
 for some beta testers.
 Two specific issues we're addressing at this time are:
  * More language-neutral: Java developers, this will help you!
  * More format-neutral: If you use some format other than CSV, this
 will help you!

 If you're interested, fill out the form at

 https://spreadsheets.google.com/viewform?formkey=dC15V2hwczhpZ1VVWFhPZGhXR1dydUE6MQ
 to get started.

 --Matthew


--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: Can't send mail with attachment using JavaMail API

2009-11-18 Thread mably
Of course, the code above doesn't need to be run in mail handler
servlet :-)

On Nov 19, 12:01 am, mably fm2...@mably.com wrote:
 I've written a simple class sending an HTML email with an embedded
 image (cf. below) via GMail SMTP.  It works perfectly fine when run
 locally from Eclipse.

 The same code in a GAE mail servlet handler produce the infamous
 Converting attachment data failed error.

 So it really seems to be a problem in GAE javamail implementation.

 /*
  * Copyright (C) 2009 Francois Masurel
  *
  * This program is free software: you can redistribute it and/or
 modify
  * it under the terms of the GNU General Public License as published
 by
  * the Free Software Foundation, either version 3 of the License, or
  * any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see http://www.gnu.org/licenses/.

  */

 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;

 import javax.mail.Message;
 import javax.mail.Multipart;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;

 /**
  * @author Francois
  *
  */
 public class GMailSMTP {

     private static final String SMTP_HOST_NAME = smtp.gmail.com;
     private static final int SMTP_HOST_PORT = 465;
     private static final String SMTP_AUTH_USER = x...@gmail.com;
     private static final String SMTP_AUTH_PWD  = yyy;

     public static void main(String[] args) throws Exception{
        new GMailSMTP().test();
     }

     public void test() throws Exception{
         Properties props = new Properties();

         props.put(mail.transport.protocol, smtps);
         props.put(mail.smtps.host, SMTP_HOST_NAME);
         props.put(mail.smtps.auth, true);
         // props.put(mail.smtps.quitwait, false);

         String from = SMTP_AUTH_USER;
         String to = SMTP_AUTH_USER;
         String subject = Testing SMTP-SSL;
         String htmlText = h1Hello/h1img src=\cid:image\;
         byte[] imgData = this.obtainByteData(enveloppe.gif);

         Session mailSession = Session.getDefaultInstance(props);
         mailSession.setDebug(true);

         Message msg = new MimeMessage(mailSession);
         msg.setFrom(new InternetAddress(from));
         msg.addRecipient(Message.RecipientType.TO, new InternetAddress
 (to));
         msg.setSubject(subject);

         Multipart mp = new MimeMultipart(related);

         MimeBodyPart htmlPart = new MimeBodyPart();
         htmlPart.setContent(htmlText, text/html);
         mp.addBodyPart(htmlPart);

         MimeBodyPart attachment = new MimeBodyPart();
         attachment.setFileName(test.gif);
         attachment.setContent(imgData, image/gif);
         attachment.setHeader(Content-ID,image);
         mp.addBodyPart(attachment);

         msg.setContent(mp);

         Transport transport = mailSession.getTransport();

         transport.connect
           (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER,
 SMTP_AUTH_PWD);

         transport.sendMessage(msg,
             msg.getRecipients(Message.RecipientType.TO));

         transport.close();
     }

     /**
      * Constructs a byte array and fills it with data that is read
 from the
      * specified resource.
      * @param filename the path to the resource
      * @return the specified resource as a byte array
      * @throws java.io.IOException if the resource cannot be read, or
 the
      *   bytes cannot be written, or the streams cannot be closed
      */
     private byte[] obtainByteData(String filename) throws IOException
 {
         InputStream inputStream = getClass().getResourceAsStream
 (filename);
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream
 (1024);
         byte[] bytes = new byte[512];

         // Read bytes from the input stream in bytes.length-sized
 chunks and write
         // them into the output stream
         int readBytes;
         while ((readBytes = inputStream.read(bytes))  0) {
             outputStream.write(bytes, 0, readBytes);
         }

         // Convert the contents of the output stream into a byte array
         byte[] byteData = outputStream.toByteArray();

         // Close the streams
         inputStream.close();
         outputStream.close();

         return byteData;
     }

 }

 On Nov 18, 11:11 pm, Ikai L (Google) ika...@google.com wrote:

  What I mean is, is this code working on a different mail server?

  On Wed, Nov 18, 2009 at 2:00 PM, mably fm2...@mably.com wrote:
   I'm just sending a simple 

Re: [appengine-java] Re: Can't send mail with attachment using JavaMail API

2009-11-18 Thread Ikai L (Google)
That's good information to know. We are not using Sun's JavaMail
implementation, so it's possible there are points of incompatibility.
There's one last thing you may want to try:

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/mail/package-summary.html

The above page documents the Low-Level API. Try creating an email object via
that API, setting the Content-ID of the attachment and the HTML tag to point
to the cid. You're already doing that in the example you sent using
javax.mail, but I'm wondering if the low-level API is capable of doing this.
If not, I'll open an issue.

On Wed, Nov 18, 2009 at 3:06 PM, mably fm2...@mably.com wrote:

 Of course, the code above doesn't need to be run in mail handler
 servlet :-)

 On Nov 19, 12:01 am, mably fm2...@mably.com wrote:
  I've written a simple class sending an HTML email with an embedded
  image (cf. below) via GMail SMTP.  It works perfectly fine when run
  locally from Eclipse.
 
  The same code in a GAE mail servlet handler produce the infamous
  Converting attachment data failed error.
 
  So it really seems to be a problem in GAE javamail implementation.
 
  /*
   * Copyright (C) 2009 Francois Masurel
   *
   * This program is free software: you can redistribute it and/or
  modify
   * it under the terms of the GNU General Public License as published
  by
   * the Free Software Foundation, either version 3 of the License, or
   * any later version.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program.  If not, see http://www.gnu.org/licenses/.
 
   */
 
  import java.io.ByteArrayOutputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.Properties;
 
  import javax.mail.Message;
  import javax.mail.Multipart;
  import javax.mail.Session;
  import javax.mail.Transport;
  import javax.mail.internet.InternetAddress;
  import javax.mail.internet.MimeBodyPart;
  import javax.mail.internet.MimeMessage;
  import javax.mail.internet.MimeMultipart;
 
  /**
   * @author Francois
   *
   */
  public class GMailSMTP {
 
  private static final String SMTP_HOST_NAME = smtp.gmail.com;
  private static final int SMTP_HOST_PORT = 465;
  private static final String SMTP_AUTH_USER = x...@gmail.com;
  private static final String SMTP_AUTH_PWD  = yyy;
 
  public static void main(String[] args) throws Exception{
 new GMailSMTP().test();
  }
 
  public void test() throws Exception{
  Properties props = new Properties();
 
  props.put(mail.transport.protocol, smtps);
  props.put(mail.smtps.host, SMTP_HOST_NAME);
  props.put(mail.smtps.auth, true);
  // props.put(mail.smtps.quitwait, false);
 
  String from = SMTP_AUTH_USER;
  String to = SMTP_AUTH_USER;
  String subject = Testing SMTP-SSL;
  String htmlText = h1Hello/h1img src=\cid:image\;
  byte[] imgData = this.obtainByteData(enveloppe.gif);
 
  Session mailSession = Session.getDefaultInstance(props);
  mailSession.setDebug(true);
 
  Message msg = new MimeMessage(mailSession);
  msg.setFrom(new InternetAddress(from));
  msg.addRecipient(Message.RecipientType.TO, new InternetAddress
  (to));
  msg.setSubject(subject);
 
  Multipart mp = new MimeMultipart(related);
 
  MimeBodyPart htmlPart = new MimeBodyPart();
  htmlPart.setContent(htmlText, text/html);
  mp.addBodyPart(htmlPart);
 
  MimeBodyPart attachment = new MimeBodyPart();
  attachment.setFileName(test.gif);
  attachment.setContent(imgData, image/gif);
  attachment.setHeader(Content-ID,image);
  mp.addBodyPart(attachment);
 
  msg.setContent(mp);
 
  Transport transport = mailSession.getTransport();
 
  transport.connect
(SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER,
  SMTP_AUTH_PWD);
 
  transport.sendMessage(msg,
  msg.getRecipients(Message.RecipientType.TO));
 
  transport.close();
  }
 
  /**
   * Constructs a byte array and fills it with data that is read
  from the
   * specified resource.
   * @param filename the path to the resource
   * @return the specified resource as a byte array
   * @throws java.io.IOException if the resource cannot be read, or
  the
   *   bytes cannot be written, or the streams cannot be closed
   */
  private byte[] obtainByteData(String filename) throws IOException
  {
  InputStream inputStream = getClass().getResourceAsStream
  (filename);
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream
  (1024);
 

[appengine-java] Re: Can't send mail with attachment using JavaMail API

2009-11-18 Thread mably
I haven't found a way to set a Content-ID header on a mimebodypart/
attachment using the low-level API.  The MailService.Attachment class
is quite rudimentary (only filename and data).

May be some part of the low level API are still undocumented ?

Thanx for all.

On Nov 19, 12:25 am, Ikai L (Google) ika...@google.com wrote:
 That's good information to know. We are not using Sun's JavaMail
 implementation, so it's possible there are points of incompatibility.
 There's one last thing you may want to try:

 http://code.google.com/appengine/docs/java/javadoc/com/google/appengi...

 The above page documents the Low-Level API. Try creating an email object via
 that API, setting the Content-ID of the attachment and the HTML tag to point
 to the cid. You're already doing that in the example you sent using
 javax.mail, but I'm wondering if the low-level API is capable of doing this.
 If not, I'll open an issue.

 On Wed, Nov 18, 2009 at 3:06 PM, mably fm2...@mably.com wrote:
  Of course, the code above doesn't need to be run in mail handler
  servlet :-)

  On Nov 19, 12:01 am, mably fm2...@mably.com wrote:
   I've written a simple class sending an HTML email with an embedded
   image (cf. below) via GMail SMTP.  It works perfectly fine when run
   locally from Eclipse.

   The same code in a GAE mail servlet handler produce the infamous
   Converting attachment data failed error.

   So it really seems to be a problem in GAE javamail implementation.

   /*
    * Copyright (C) 2009 Francois Masurel
    *
    * This program is free software: you can redistribute it and/or
   modify
    * it under the terms of the GNU General Public License as published
   by
    * the Free Software Foundation, either version 3 of the License, or
    * any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program.  If not, see http://www.gnu.org/licenses/.

    */

   import java.io.ByteArrayOutputStream;
   import java.io.IOException;
   import java.io.InputStream;
   import java.util.Properties;

   import javax.mail.Message;
   import javax.mail.Multipart;
   import javax.mail.Session;
   import javax.mail.Transport;
   import javax.mail.internet.InternetAddress;
   import javax.mail.internet.MimeBodyPart;
   import javax.mail.internet.MimeMessage;
   import javax.mail.internet.MimeMultipart;

   /**
    * @author Francois
    *
    */
   public class GMailSMTP {

       private static final String SMTP_HOST_NAME = smtp.gmail.com;
       private static final int SMTP_HOST_PORT = 465;
       private static final String SMTP_AUTH_USER = x...@gmail.com;
       private static final String SMTP_AUTH_PWD  = yyy;

       public static void main(String[] args) throws Exception{
          new GMailSMTP().test();
       }

       public void test() throws Exception{
           Properties props = new Properties();

           props.put(mail.transport.protocol, smtps);
           props.put(mail.smtps.host, SMTP_HOST_NAME);
           props.put(mail.smtps.auth, true);
           // props.put(mail.smtps.quitwait, false);

           String from = SMTP_AUTH_USER;
           String to = SMTP_AUTH_USER;
           String subject = Testing SMTP-SSL;
           String htmlText = h1Hello/h1img src=\cid:image\;
           byte[] imgData = this.obtainByteData(enveloppe.gif);

           Session mailSession = Session.getDefaultInstance(props);
           mailSession.setDebug(true);

           Message msg = new MimeMessage(mailSession);
           msg.setFrom(new InternetAddress(from));
           msg.addRecipient(Message.RecipientType.TO, new InternetAddress
   (to));
           msg.setSubject(subject);

           Multipart mp = new MimeMultipart(related);

           MimeBodyPart htmlPart = new MimeBodyPart();
           htmlPart.setContent(htmlText, text/html);
           mp.addBodyPart(htmlPart);

           MimeBodyPart attachment = new MimeBodyPart();
           attachment.setFileName(test.gif);
           attachment.setContent(imgData, image/gif);
           attachment.setHeader(Content-ID,image);
           mp.addBodyPart(attachment);

           msg.setContent(mp);

           Transport transport = mailSession.getTransport();

           transport.connect
             (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER,
   SMTP_AUTH_PWD);

           transport.sendMessage(msg,
               msg.getRecipients(Message.RecipientType.TO));

           transport.close();
       }

       /**
        * Constructs a byte array and fills it with data that is read
   from the
        * specified resource.
        * @param filename the path to the resource
        * @return the specified resource as a byte array
        * @throws 

Re: [appengine-java] Problems with large request/response headers

2009-11-18 Thread Ikai L (Google)
Matt,

There probably isn't anything you'll be able to do in the meantime. You may
not see this when deployed since we are not using a different servlet engine
in production. Can you go ahead and open an issue here for us to upgrade our
SDK's version of Jetty?

http://code.google.com/p/googleappengine/issues/list?can=2q=jetty

It's something we'd eventually want to do anyway, and getting it into the
issue tracker will mean it's on our radar.

On Wed, Nov 18, 2009 at 8:32 AM, Matthew McGinty mcgin...@gmail.com wrote:

 Ikai,

 Reading all of the Jetty bug report you found, I see that it is
 possible to configure the size of the header buffer used by Jetty.
 This is done in the jetty.xml file.
 I don't see that file within my GAE project.
 I see appengine-web.xml.

 Does GAE expose/use jetty.xml or some equivalent?
 If so, where would I find it?

 If I can configure the Jetty that is bundled with GAE Dev server, then
 that would solve my problem.

 Thanks.

 Matt

 On Wed, Nov 18, 2009 at 11:23 AM, Matthew McGinty mcgin...@gmail.com
 wrote:
  Thanks Ikai for responding and for finding that Jetty bug report.
  It is marked as fixed in Jetty 6.1.11.
  Do you know if that fix is in the version of Jetty that is bundled
  with the GAE Dev server?
 
  I can't store that data in the session because the data being stored
  in the cookies is not being placed there by me.
  It is being placed there by the Application Server software I'm using
  which is running on top of the GAE.
  Specifically it is being placed there by OpenBD Google which is a
  version of BlueDragon (a CFML Engine) ported to run on GAE. BlueDragon
  is the Application Server that powers MySpace.
 
  http://www.openbluedragon.org/
 
  http://wiki.openbluedragon.org/wiki/index.php/Category:GoogleAppEngine
 
  Storing such data in cookies is a requirement/feature of the CFML
  Engine. That is how Adobe's ColdFusion CFML Engine functions. It is
  jjust name/value pair data (String data)... variable defined to be in
  something called the client scope (in CFML speak).
  BD may be configured to store client scoped variables in either
  cookies or a database... so using the database option would work
  around this problem but it still seems like something that should be
  fixed for GAE.
 
  BlueDragon runs on top of various platforms:
   Microsoft .NET framework
   WebSphere
   Weblogic
   ServletExec
 
  and behind commercial grade webservers (IIS, and Apache) and does not
  exhibit this problem in any of those environments... only with Jetty.
 
  Matt
 
  On Mon, Nov 16, 2009 at 5:36 PM, Ikai L (Google) ika...@google.com
 wrote:
  Matt,
 
  This looks like it may be a JeTTy issue:
  http://jira.codehaus.org/browse/JETTY-336
 
  That being said, I'm curious as to what data you are storing in the
 cookie.
  Less than 1.5% of sites pass cookies larger than 1501 bytes, and there
 are
  performance implications for passing large amounts of cookies:
  http://yuiblog.com/blog/2007/03/01/performance-research-part-3
 
   Is this data you can store in the session instead?
 
  On Fri, Nov 13, 2009 at 12:05 PM, Matthew McGinty mcgin...@gmail.com
  wrote:
 
  I'm using the GAE Java Dev Server (i.e. Jetty).
  When I request a page that sends a large amount of cookie data to the
  browser and then re-request the page (so that the browser sends the
  cookies back to the server) I get this stacktrace:
 
  ==
  Nov 13, 2009 6:35:13 PM com.google.apphosting.utils.jetty.JettyLogger
  warn
  WARNING: handle failed
  java.io.IOException: FULL head
 at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:276)
 at
 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
 at
 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
 at org.mortbay.io.nio.SelectChannelEndPoint.run
  (SelectChannelEndPoint.java:396)
 at org.mortbay.thread.BoundedThreadPool$PoolThread.run
  (BoundedThreadPool.java:442)
  ==
 
  The behavior I see is that the browser receives what seems to be a
  completely empty response body, and the access log does not show the
  request at all (likely because the request/response protocol was
  halted when the exception occured). If I configure my browser to send
  its requests through a diagnostic proxy tool, I can see that the
  request headers being sent are about 5k total. But the response takes
  2-3 minutes to come. Once it does, the proxy tool shows me only
  response headers (no response body):
 
  ===
  HTTP/1.1 200 OK
  Content-Type: text/html; charset=utf-8
  Expires: Thu, 01 Jan 1970 00:00:00 GMT
  Set-Cookie: cookie name 1=cookie value 1
  Set-Cookie: cookie name 2=cookie value 2
  Set-Cookie: cookie name 3=cookie value 3
  Transfer-Encoding: chunked
  Server: Jetty(6.1.x)
  ===
 
  which I suppose explains why the browser renders it as an empty
  response.
 
  I found a clue here:
 
 
 
 

[appengine-java] Unable to update app: null

2009-11-18 Thread Leonard Siu
I received the following error when I tried to deploy an application
to google hosted appengine (GAE/J).   Any idea what could have cause
the problem?

com.google.appengine.tools.admin.AdminException: Unable to update app:
null
at com.google.appengine.tools.admin.AppAdminImpl.update
(AppAdminImpl.java:62)
at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy
(AppEngineBridgeImpl.java:271)
at
com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace
(DeployProjectJob.java:148)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run
(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.NullPointerException
at com.google.apphosting.utils.glob.GlobIntersector.extractPrefix
(GlobIntersector.java:273)
at com.google.apphosting.utils.glob.GlobIntersector.doIntersectTwo
(GlobIntersector.java:151)
at com.google.apphosting.utils.glob.GlobIntersector.doIntersect
(GlobIntersector.java:133)
at com.google.apphosting.utils.glob.GlobIntersector.getIntersection
(GlobIntersector.java:65)
at com.google.appengine.tools.admin.AppYamlTranslator
$AbstractHandlerGenerator.createGlobPatterns(AppYamlTranslator.java:
249)
at com.google.appengine.tools.admin.AppYamlTranslator
$AbstractHandlerGenerator.translate(AppYamlTranslator.java:234)
at com.google.appengine.tools.admin.AppYamlTranslator.translateWebXml
(AppYamlTranslator.java:103)
at com.google.appengine.tools.admin.AppYamlTranslator.getYaml
(AppYamlTranslator.java:69)
at com.google.appengine.tools.admin.AppVersionUpload.getAppYaml
(AppVersionUpload.java:185)
at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction
(AppVersionUpload.java:241)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload
(AppVersionUpload.java:98)
at com.google.appengine.tools.admin.AppAdminImpl.update
(AppAdminImpl.java:56)
... 4 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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




Re: [appengine-java] 500 Internal Server Error, when update appl

2009-11-18 Thread Jackob
- aapcore
- appengine-java-sdk-1.2.6
- Win XP
- Several first times it was work fine
- no proxy

On Wed, Nov 18, 2009 at 11:42 PM, Ikai L (Google) ika...@google.com wrote:

 What is your app ID? Can you also provide the following details:

 - application ID
 - SDK version. Also include whether it is Python or Java
 - Operating System
 - Whether this is the first push or not
 - Are you behind a proxy?

 As much information as you can give me would be helpful.


 On Mon, Nov 16, 2009 at 10:25 PM, Jackob jrozn...@gmail.com wrote:

 The problem is not fixed , i can't upload update.
 The happened only with my account?


 On Mon, Nov 16, 2009 at 11:59 PM, Ikai L (Google) ika...@google.comwrote:

 Have you been able to update this application?

 On Wed, Nov 11, 2009 at 11:53 PM, Jackroz jrozn...@gmail.com wrote:

 Hi Team,

 Last two day i can't update  appl, what is wrong?

 Please see detail log:

 Unable to update:
 java.io.IOException: Error posting to URL:

 http://appengine.google.com/api/appversion/cloneblobs?app_id=aapcoreversion=2;
 500 Internal Server Error

 Server Error (500)
 A server error has occurred.

at com.google.appengine.tools.admin.ServerConnection.send
 (ServerConnection.java:143)
at com.google.appengine.tools.admin.ServerConnection.post
 (ServerConnection.java:81)
at com.google.appengine.tools.admin.AppVersionUpload.send
 (AppVersionUpload.java:427)
at com.google.appengine.tools.admin.AppVersionUpload.cloneFiles
 (AppVersionUpload.java:293)
at
 com.google.appengine.tools.admin.AppVersionUpload.beginTransaction
 (AppVersionUpload.java:255)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload
 (AppVersionUpload.java:98)
at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:56)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute
 (AppCfg.java:521)
at
 com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:130)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:58)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:54)
 com.google.appengine.tools.admin.AdminException: Unable to update app:
 Error posting to URL:
 http://appengine.google.com/api/appversion/cloneblobs?app_id=aapcoreversion=2;
 500 Internal Server Error

 Server Error (500)
 A server error has occurred.

at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:62)
at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute
 (AppCfg.java:521)
at
 com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:130)
at com.google.appengine.tools.admin.AppCfg.init(AppCfg.java:58)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:54)
 Caused by: java.io.IOException: Error posting to URL:

 http://appengine.google.com/api/appversion/cloneblobs?app_id=aapcoreversion=2;
 500 Internal Server Error

 Server Error (500)
 A server error has occurred.

at com.google.appengine.tools.admin.ServerConnection.send
 (ServerConnection.java:143)
at com.google.appengine.tools.admin.ServerConnection.post
 (ServerConnection.java:81)
at com.google.appengine.tools.admin.AppVersionUpload.send
 (AppVersionUpload.java:427)
at com.google.appengine.tools.admin.AppVersionUpload.cloneFiles
 (AppVersionUpload.java:293)
at
 com.google.appengine.tools.admin.AppVersionUpload.beginTransaction
 (AppVersionUpload.java:255)
at com.google.appengine.tools.admin.AppVersionUpload.doUpload
 (AppVersionUpload.java:98)
at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:56)
... 4 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.





 --
 Ikai Lan
 Developer Programs Engineer, Google App Engine

 --
 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
 google-appengine-j...@googlegroups.com.
 To unsubscribe from this group, send email to
 google-appengine-java+unsubscr...@googlegroups.comgoogle-appengine-java%2bunsubscr...@googlegroups.com
 .
 For more options, visit this group at
 http://groups.google.com/group/google-appengine-java?hl=.




 --
 Best regards,
 Yakov Liskoff

 Mobile: 972-54-4512963
 Email: jrozn...@gmail.com
 Web:  http://www.vcomm.co.nr
 IM: jackobl (Skype)

 -
 The contents of this email and any attachments are confidential.
 It is intended for the named recipient(s) only.
 

[appengine-java] Re: Unable to update app: null

2009-11-18 Thread Leonard Siu
I solved my own problem.  It turned out an empty url-pattern / in
security-constraint  web-resource-collection in my web.xml is causing
this error.

On Nov 19, 11:10 am, Leonard Siu leonard@gmail.com wrote:
 I received the following error when I tried to deploy an application
 to google hosted appengine (GAE/J).   Any idea what could have cause
 the problem?

 com.google.appengine.tools.admin.AdminException: Unable to update app:
 null
 at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:62)
 at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy
 (AppEngineBridgeImpl.java:271)
 at
 com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace
 (DeployProjectJob.java:148)
 at org.eclipse.core.internal.resources.InternalWorkspaceJob.run
 (InternalWorkspaceJob.java:38)
 at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
 Caused by: java.lang.NullPointerException
 at com.google.apphosting.utils.glob.GlobIntersector.extractPrefix
 (GlobIntersector.java:273)
 at com.google.apphosting.utils.glob.GlobIntersector.doIntersectTwo
 (GlobIntersector.java:151)
 at com.google.apphosting.utils.glob.GlobIntersector.doIntersect
 (GlobIntersector.java:133)
 at com.google.apphosting.utils.glob.GlobIntersector.getIntersection
 (GlobIntersector.java:65)
 at com.google.appengine.tools.admin.AppYamlTranslator
 $AbstractHandlerGenerator.createGlobPatterns(AppYamlTranslator.java:
 249)
 at com.google.appengine.tools.admin.AppYamlTranslator
 $AbstractHandlerGenerator.translate(AppYamlTranslator.java:234)
 at com.google.appengine.tools.admin.AppYamlTranslator.translateWebXml
 (AppYamlTranslator.java:103)
 at com.google.appengine.tools.admin.AppYamlTranslator.getYaml
 (AppYamlTranslator.java:69)
 at com.google.appengine.tools.admin.AppVersionUpload.getAppYaml
 (AppVersionUpload.java:185)
 at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction
 (AppVersionUpload.java:241)
 at com.google.appengine.tools.admin.AppVersionUpload.doUpload
 (AppVersionUpload.java:98)
 at com.google.appengine.tools.admin.AppAdminImpl.update
 (AppAdminImpl.java:56)
 ... 4 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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=.




[appengine-java] Re: GAE status / availalbility problems?

2009-11-18 Thread Diana Cruise
Excellent news.  How long did it take to resolve this matter and what
was the impact to your Users?

I assume you would agree we could avoid this type of problem by only
using the data types listed here right?

http://code.google.com/appengine/docs/java/datastore/dataclasses.html#Core_Value_Types


On Nov 18, 3:27 pm, Dmitry Anipko dmitry.ani...@gmail.com wrote:
 Thanks Jason for help. In our case the problem was caused by usage of
 byte[] field in a persisted class. Somehow though, it wasn't causing
 any problems immediately, but only after a few objects have been
 saved. Per Jason, usage of byte[] in JDO on GAE isn't supported.



 On Wed, Nov 18, 2009 at 1:00 PM, Diana Cruise diana.l.cru...@gmail.com 
 wrote:
  What's the latest here Dmitry...can GAE handle more than 100 request
  or not?  Please update where you are with this problem.  Thanks.

  On Nov 9, 5:15 pm, Dmitry Anipko dmitry.ani...@gmail.com wrote:
  Following up offline and will update with resolution later.

  On Mon, Nov 9, 2009 at 9:50 AM, Jason (Google) apija...@google.com wrote:
   As always, I need your application ID in order to help troubleshoot
   app-specific issues. Please provide that and any stack traces or other 
   error
   messages you see in your application's logs.

   - Jason

   On Fri, Nov 6, 2009 at 9:47 PM, Dmitry Anipko dmitry.ani...@gmail.com
   wrote:

   After some more experimentation, it looks like there is something in
   the data store that is surfaced by our application:

   if I clean up the store for the application completely, using the web
   interface, then for the first ~100 request it works fine, but after
   some time, it starts producing those errors I wrote before - it can't
   query objects by index (and that problem persists until I clean the
   store again).

   The second observation - although I don't know if it is related or not
   - is when the store for my app is in such state, and I try to view
   objects through the web interface, the web interfaces crashes with the
   error 500:

   Server Error
   A server error has occurred.

   Return to Applications screen »

   GAE folks, can someone please take a look - this is a blocking issue
   for my team, and I don't know how to proceed here without your help.

   Everything works just fine when I run it on a local development
   server.

   Thank you.

   On Nov 6, 11:05 am, Diana Cruise diana.l.cru...@gmail.com wrote:
I see NO reply from GAE here regarding such a critical issue!!!

Is your app still down, what is the status of your app?  How are we
supposed to put an application in production with GAE if such a
problem can occur with NO response for 3 days?  Is there another
channel to raise such high-priority issues to get proper helpdesk
response?

On Nov 4, 1:58 am, Dmitry Anipko dmitry.ani...@gmail.com wrote:

 It is 11:56 Pacific 11/3/2009, are there any known issues withGAE
 right now?

 My application that has been working for a couple of months now 
 today
 started producing failures for some queries from the data store
 (basically an object which has just been stored cannot be retrieved
 after that by key), and after some time started producing even

 htmlhead
 meta http-equiv=content-type content=text/html;charset=utf-8
 title500 Server Error/title
 /head
 body text=#00 bgcolor=#ff
 h1Error: Server Error/h1
 h2The server encountered an error and could not complete your
 request.pIf the problem persists, please A HREF=http://
 code.google.com/appengine/support/report/A your problem and
 mention this error message and the query that caused it./h2
 h2/h2
 /body/html

 The same application executes just fine in the localGAEdevelopment
 environment. Can folks fromGAEcomment if there is any maintenance
 going on right now or how could I get more details on what causing 
 the
 failures (again the same code worked for quite some time now, so I
 think it is unlikely the code is the issue here). Thanks for your
 help.- Hide quoted text -

- Show quoted text -- Hide quoted text -

  - Show quoted text -

  --

  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 google-appengine-j...@googlegroups.com.
  To unsubscribe from this group, send email to 
  google-appengine-java+unsubscr...@googlegroups.com.
  For more options, visit this group 
  athttp://groups.google.com/group/google-appengine-java?hl=en.- Hide quoted 
  text -

 - Show quoted text -

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at