2013-01-08 4 views
0

J'utilise Netty 3 applet et quand je commence à partir d'un navigateur, il me donne stacktrace suivante dans la console Java, si je lance depuis Eclipse Applet Viewer alors ce problème ne se produit pas:Netty dans applet lance AccessControlException

network: Cache entry not found [url: http://<IP address>/crossdomain.xml, version: null] 
network: Connecting http://<IP address>/crossdomain.xml with proxy=DIRECT 
network: Connecting http://<IP address>:80/ with proxy=DIRECT 
java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at sun.net.NetworkClient.doConnect(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.<init>(Unknown Source) 
    at sun.net.www.http.HttpClient.New(Unknown Source) 
    at sun.net.www.http.HttpClient.New(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) 
    at com.sun.deploy.net.CrossDomainXML$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.deploy.net.CrossDomainXML.privilegedConnect(Unknown Source) 
    at com.sun.deploy.net.CrossDomainXML.check(Unknown Source) 
    at com.sun.deploy.net.CrossDomainXML.check(Unknown Source) 
    at sun.plugin2.applet.SecurityManagerHelper.checkConnectHelper(Unknown Source) 
    at sun.plugin2.applet.AWTAppletSecurityManager.checkConnect(Unknown Source) 
    at sun.nio.ch.SocketChannelImpl.connect(Unknown Source) 
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:150) 
    at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:113) 
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:771) 
    at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:60) 
    at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591) 
    at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:582) 
    at org.jboss.netty.channel.Channels.connect(Channels.java:541) 
    at org.jboss.netty.channel.AbstractChannel.connect(AbstractChannel.java:210) 
    at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:227) 
    at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:188) 
    at org.mypackage.Myclass.connect(Client.java:80) 

Et ce

Exception caught: [id: 0x00498342] EXCEPTION: java.security.AccessControlException: access denied ("java.net.SocketPermission" "<IP address>:18090" "connect,resolve") 
Exception caught: [id: 0x00498342] EXCEPTION: java.nio.channels.ClosedChannelException 

je test au PC local mais précise son adresse IP pour se connecter.

Ceci est la ligne 80 dans ma méthode de connexion:

future = bootstrap.connect(new InetSocketAddress(host, port)); 

J'ai essayé de l'entourer sans succès

AccessController.doPrivileged(
     new PrivilegedAction<Void>() { 
      public Void run() { 
       MyClass.connect(type, userId, secondValue); 
       return null; 
      } 
     } 
    ); 

S'il vous plaît, des conseils comment puis-je résoudre?

+0

L'applet est-elle signée? – fatfredyy

+0

@fatfredyy, non, j'ai compris que je dois le signer. Je n'ai pas encore essayé –

Répondre

1

J'ai été capable de résoudre le problème. D'abord, j'ai essayé de me connecter à 127.0.0.1, mais pour cela j'ai dû installer Jetty et mettre mon applet et hmtl à l'intérieur de la jetée. Donc ça a commencé à fonctionner pour localhost seulement.

Socket connection to originating server of an unsigned Java applet

ne fonctionne toujours pas 10.xyz, donc je devais signer applet

Is it possible to sign a java applet for free?

et aussi de créer crossdomain.xml dans la jetée comme ici:

access denied (java.net.SocketPermission 127.0.0.1:8080 connect,resolve)

Questions connexes