Webstart complications
chtimi2 Jun 9, 2009 10:46 AMOne of the things i was hoping to simplify with JBoss was Webstart (our application has a rich client deployed via Webstart, which accesses the server's EJBs and receives JMS notifications).
But so far, it looks more complicated; there are 2 issues:
1/
In 4.2.3, a jboss-remoting bug made it necessary to modify the policy file on client machines, adding
permission java.util.PropertyPermission "legacyParsing", "read";to be able to receive JBM messages.
This issue is resolved (i tested it) as expected in 5.1 which could be great since it would simplify the client machines installation.
Unfortunately, to make it work in 5.1, i had to add 2 other permissions, which nullifies this gain:
permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.io.SerializablePermission "enableSubstitution";
If i don't, i get
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers) 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 java.lang.SecurityManager.checkMemberAccess(SecurityManager.java:1662) at java.lang.Class.checkMemberAccess(Class.java:2157) at java.lang.Class.getDeclaredMethods(Class.java:1790) at org.jboss.invocation.MarshalledInvocation$DeclaredMethodsAction.run(MarshalledInvocation.java:691) at java.security.AccessController.doPrivileged(Native Method) at org.jboss.invocation.MarshalledInvocation.getFullInterfaceHashes(MarshalledInvocation.java:195) at org.jboss.invocation.MarshalledInvocation.calculateHash(MarshalledInvocation.java:341) at org.jboss.invocation.MarshalledInvocation.writeExternal(MarshalledInvocation.java:550) at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1418) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1390) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:274) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133) at org.jboss.ha.framework.server.HARMIServerImpl_Stub.invoke(Unknown Source) at org.jboss.ha.framework.interfaces.HARMIClient.invokeRemote(HARMIClient.java:225) at org.jboss.ha.framework.interfaces.HARMIClient.invoke(HARMIClient.java:327) at $Proxy0.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686) at javax.naming.InitialContext.lookup(InitialContext.java:392)
2/
Why is jbossall-client empty? To make it work in Webstart i had to add to my .jnlp file a lot a files:
<!-- Ajout JBoss5 --> <jar href="MMI/jnp-client.jar"/> <jar href="MMI/jboss-logging-spi.jar"/> <jar href="MMI/jboss-security-spi.jar"/> <jar href="MMI/jbosssx-client.jar"/> <jar href="MMI/jboss-ejb3-common-client.jar"/> <jar href="MMI/jboss-ejb3-core-client.jar"/> <jar href="MMI/jboss-ejb3-proxy-clustered-client.jar"/> <jar href="MMI/jboss-ejb3-proxy-impl-client.jar"/> <jar href="MMI/jboss-ejb3-proxy-spi-client.jar"/> <jar href="MMI/jboss-ejb3-security-client.jar"/> <jar href="MMI/jboss-ha-client.jar"/> <jar href="MMI/jboss-common-core.jar"/> <jar href="MMI/concurrent.jar"/> <jar href="MMI/jboss-mdr.jar"/> <jar href="MMI/jbosssx-as-client.jar"/> <jar href="MMI/jboss-integration.jar"/> <jar href="MMI/jboss-serialization.jar"/>