2009-09-21 10 views
6

Ho un'applicazione GoogleAppEngine che è necessario per connettersi a un altro server localhost, ma quando sto cercando di fare questo dal codice server, ottengo:Esiste un modo corretto per manipolare le autorizzazioni di sicurezza di GoogleAppEngine?

java.security.AccessControlException: access denied (java.net.SocketPermission localhost resolve)

So che posso specificare il mio ulteriore concessione di sicurezza utilizzando argomenti Java virtual machine (li ho specificato in Web Application configurazione di esecuzione):

java -Djava.security.manager -Djava.security.policy=WEB-INF/java.policy

con java.policy co ntents:

grant { 
     permission java.net.SocketPermission "localhost:8081", "connect, resolve"; 
}; 

ma ha la precedenza il responsabile della sicurezza interna GoogleAppEngine che si trova nella classe privata a com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager, così le proprietà, richieste per AppEngine sé sono disabilitati in quel modo.

Esiste un modo per fare in modo che la classe di gestione della sicurezza interna di GoogleAppEngine utilizzi il mio file di criteri anziché sostituirlo manualmente con un file stub (che consente qualcosa) in un barattolo?

+1

Ho trovato una soluzione di classe fittizia all'indirizzo http://dmitrygusev.blogspot.com/2009/08/turn-java-security-manager-off-in.html, ma spero ancora di trovare un altro modo per ignorare solo uno permesso –

+1

Come prevedete di eseguire il server locale su AppEngine? Se hai intenzione di eseguire il server da qualche altra parte, si verificheranno altri problemi? (firewall, restrizioni Google) – phsiao

+0

sì, ma localhost è solo un test uno/sostituto, ho voluto essere in grado di connettersi con un altro server aperto (jabber, ad esempio), ma sì, molto probabilmente sarà limitato a GAE (Speravo, ho la possibilità concessa di ignorare queste impostazioni se ho veramente capito cosa sto facendo, ma ora vedo che va bene su localhost ma non su GAE) ... –

risposta

2

Non è possibile aprire socket su App Engine. È necessario utilizzare lo URLFetch API, tramite java.net o direttamente. Come ti aspetti di accedere a "localhost" quando la tua app è stata caricata su App Engine, però?

+0

URLFetch soddisferà davvero le mie esigenze, Penso, grazie. –

+0

... no, mi dispiace, la mia porta del server non è 80/443, è un server openfire e uso una libreria java specifica per usare un'applicazione su di essa, e questa libreria, a suo modo, usa 'SocketAddress' per connettersi. Non userò semplicemente GAE. La domanda non ha risposta, sembra, solo 'Nessuna connessione a non 80/443 consentita'. –

0

se è necessario utilizzare jabber (xmpp), è possibile utilizzare XMPP API del motore di app.

Problemi correlati