I have a library that contains another jar. The code in the inner jar requires a SocketPermission, so I include the following entries in my library-jar.xml:
(actually it doesn't matter what I put inside codeBase - I tried "file:jars/*", "file:///jars/<name_of_jar>" and several other variations).
The problem is that the library fails to install due to the exception given below. I looked into the source (I'm on Mobicents 2.4.1-FINAL) and this line made me curious:
org.mobicents.slee.container.component.security.PermissionHolderImpl:172: URI presentCodeBase = new URI("file", "", new URI(ge.codeBase).getPath());
Is there any way it does not cause URISyntaxException due to empty scheme-specific part?
Any suggestion what is the proper Grant syntax to give permissions to constituent jars in a SLEE library? According to my understanding, JSLEE 1.1 spec (ch. 16.3) says that if I don't provide codeBase in the Grant statement then it does not cover constituent jars.
2011-08-10 16:41:05,708 INFO [org.mobicents.slee.container.component.deployment.DeployableUnitBuilderImpl] Undeploying deployable unit due to building error
javax.slee.management.DeploymentException: failed to validate LibraryID[name=ParlayX RA API,vendor=
ptk.sg,version=0.1-SNAPSHOT]
at org.mobicents.slee.container.component.deployment.DeployableUnitBuilderImpl.build(DeployableUnitBuilderImpl.java:265)
at org.mobicents.slee.container.component.deployment.DeployableUnitBuilderImpl.build(DeployableUnitBuilderImpl.java:72)
at org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl.install(DeploymentMBeanImpl.java:163)
at org.mobicents.slee.container.deployment.jboss.action.InstallDeployableUnitAction.invoke(InstallDeployableUnitAction.java:41)
at org.mobicents.slee.container.deployment.jboss.DeploymentManager.sciAction(DeploymentManager.java:323)
at org.mobicents.slee.container.deployment.jboss.DeploymentManager.installDeployableUnit(DeploymentManager.java:168)
at org.mobicents.slee.container.deployment.jboss.SLEESubDeployer.start(SLEESubDeployer.java:281)
at org.mobicents.slee.container.deployment.jboss.SleeContainerDeployerImpl.start(SleeContainerDeployerImpl.java:262)
at org.mobicents.slee.container.deployment.jboss.SLEEDeployer.callSubDeployer(SLEEDeployer.java:124)
at org.mobicents.slee.container.deployment.jboss.SLEEDeployer.setInternalDeployer(SLEEDeployer.java:170)
at org.mobicents.slee.container.deployment.jboss.SleeContainerDeployerImpl$1.run(SleeContainerDeployerImpl.java:133)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.slee.management.DeploymentException: Failed to make permissions usable.
at org.mobicents.slee.container.component.LibraryComponentImpl.processSecurityPermissions(LibraryComponentImpl.java:168)
at org.mobicents.slee.container.component.deployment.DeployableUnitBuilderImpl.build(DeployableUnitBuilderImpl.java:262)
... 16 more
Caused by: java.lang.IllegalArgumentException: Failed to parse code base: file:///jars/*
at org.mobicents.slee.container.component.security.PermissionHolderImpl.instrumentCodeBase(PermissionHolderImpl.java:184)
at org.mobicents.slee.container.component.security.PermissionHolderImpl.setPolicy(PermissionHolderImpl.java:132)
at org.mobicents.slee.container.component.security.PermissionHolderImpl.<init>(PermissionHolderImpl.java:70)
at org.mobicents.slee.container.component.LibraryComponentImpl.processSecurityPermissions(LibraryComponentImpl.java:151)
... 17 more
Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 5: file:#/jars/*
at java.net.URI$Parser.fail(URI.java:2809)
at java.net.URI$Parser.failExpecting(URI.java:2815)
at java.net.URI$Parser.parse(URI.java:3018)
at java.net.URI.<init>(URI.java:807)
at org.mobicents.slee.container.component.security.PermissionHolderImpl.instrumentCodeBase(PermissionHolderImpl.java:172)
... 20 more
...