[appengine-java] Google Voice + App Engine (Java)

2011-02-02 Thread lovegoogle
Hello All,

I tried using google voice within App Engine and it fails to execute
because of the custom Security Manager that App Engine uses.
From the stack trace, it looks like it is failing during the Http
Connection it needs to make to send SMS.
My goal is to use SMS feature within my application.

I tried running the same code outside of App Engine runtime, using
just my JDK as a console app and it works fine.
The restriction is imposed by App Engine.

Is there any way to get around it or Google Voice is a no no within
App Engine.
I would assume that Google Voice is a trusted code since its part of
google APIs.

Any pointers will really help me...Thanks.

Sinu

Here is the code
-
try
{
log.info(going to log in);
Voice voice = new Voice(email, password);
log.info(logged in);
voice.sendSMS(phonenum, message);
log.info(sms sent);
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
-


Here is the stack trace..

-
going to log in
https://www.google.com/accounts/ClientLogin - OK
Logged in to Google - Auth token received
java.security.AccessControlException: access denied
(java.lang.RuntimePermission setFactory)
at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:
323)
at
java.security.AccessController.checkPermission(AccessController.java:
546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:
532)
at com.google.appengine.tools.development.DevAppServerFactory
$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
at java.lang.SecurityManager.checkSetFactory(SecurityManager.java:
1612)
at
java.net.HttpURLConnection.setFollowRedirects(HttpURLConnection.java:
249)
at com.techventus.server.voice.Voice.get(Voice.java:1144)
at com.techventus.server.voice.Voice.getGeneral(Voice.java:361)
at com.techventus.server.voice.Voice.init(Voice.java:262)
at com.techventus.server.voice.Voice.init(Voice.java:211)
at
com.sinusekhar.cloudapps.zumba.dao.MobileDAO.sendSMS(MobileDAO.java:
15)
at org.apache.jsp.zumba.jsp.play_jsp._jspService(play_jsp.java:64)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
377)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at com.google.appengine.tools.development.PrivilegedJspServlet.access
$101(PrivilegedJspServlet.java:23)
at com.google.appengine.tools.development.PrivilegedJspServlet
$2.run(PrivilegedJspServlet.java:59)
at java.security.AccessController.doPrivileged(Native Method)
at
com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:
57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
58)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at 

Re: [appengine-java] Google Voice + App Engine (Java)

2011-02-02 Thread Fabrizio Accatino
I think your lib uses not whitelisted java API or blocked java API
   java.security.AccessControlException: access denied
(java.lang.RuntimePermission
setFactory)


Following your stacktrace the problem comes from
java.net.HttpURLConnection.setFollowRedirect
The method is called by
com.techventus.server.voice.Voice.get(Voice.java:1144)
I searched using Google... is this your lib?
http://code.google.com/p/google-voice-java  ?

If yes, download the latest source code and compile it. The latest version
of Voice.java does not contain the call to
java.net.HttpURLConnection.setFollowRedirect.
It was replaced some revisions ago.
http://code.google.com/p/google-voice-java/source/diff?spec=svn137old=115r=135format=sidepath=/trunk/src/com/techventus/server/voice/Voice.java
http://code.google.com/p/google-voice-java/source/browse/trunk/src/com/techventus/server/voice/Voice.java

The jar in the download area was not updated. So you need to download the
source code and compile it by yourself.


   Fabrizio




On Wed, Feb 2, 2011 at 5:34 PM, lovegoogle sinusek...@gmail.com wrote:

 Hello All,

 I tried using google voice within App Engine and it fails to execute
 because of the custom Security Manager that App Engine uses.
 From the stack trace, it looks like it is failing during the Http
 Connection it needs to make to send SMS.
 My goal is to use SMS feature within my application.

 I tried running the same code outside of App Engine runtime, using
 just my JDK as a console app and it works fine.
 The restriction is imposed by App Engine.

 Is there any way to get around it or Google Voice is a no no within
 App Engine.
 I would assume that Google Voice is a trusted code since its part of
 google APIs.

 Any pointers will really help me...Thanks.

 Sinu

 Here is the code
 -
try
{
log.info(going to log in);
Voice voice = new Voice(email, password);
log.info(logged in);
voice.sendSMS(phonenum, message);
log.info(sms sent);
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
 -


 Here is the stack trace..

 -
 going to log in
 https://www.google.com/accounts/ClientLogin - OK
 Logged in to Google - Auth token received
 java.security.AccessControlException: access denied
 (java.lang.RuntimePermission setFactory)
at

 java.security.AccessControlContext.checkPermission(AccessControlContext.java:
 323)
at
 java.security.AccessController.checkPermission(AccessController.java:
 546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:
 532)
at com.google.appengine.tools.development.DevAppServerFactory
 $CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
at java.lang.SecurityManager.checkSetFactory(SecurityManager.java:
 1612)
at
 java.net.HttpURLConnection.setFollowRedirects(HttpURLConnection.java:
 249)
at com.techventus.server.voice.Voice.get(Voice.java:1144)
at com.techventus.server.voice.Voice.getGeneral(Voice.java:361)
at com.techventus.server.voice.Voice.init(Voice.java:262)
at com.techventus.server.voice.Voice.init(Voice.java:211)
at
 com.sinusekhar.cloudapps.zumba.dao.MobileDAO.sendSMS(MobileDAO.java:
 15)
at org.apache.jsp.zumba.jsp.play_jsp._jspService(play_jsp.java:64)
at
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
 377)
at
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
 313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at
 com.google.appengine.tools.development.PrivilegedJspServlet.access
 $101(PrivilegedJspServlet.java:23)
at com.google.appengine.tools.development.PrivilegedJspServlet
 $2.run(PrivilegedJspServlet.java:59)
at java.security.AccessController.doPrivileged(Native Method)
at

 com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:
 57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
 511)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1166)
at

 com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
 58)
at