Vorab: wir entwickeln unter Suse-Linux 9.3...
Wir bauen aus unserer Webanwendung heraus eine Verbindung zu RMI-Objekten auf.
Diese kommunizieren dann über das OpenAdaptor-Framework mit einem Fremdsystem.
Die RMI-Aufrufe aus der OpenAdaptor-Anwendung in unsere Webanwendung hinein funktionieren.
Andersherum hat bis jetzt auch alles hervorragend funktioniert mit Java 1.4.2 und Tomcat 4.1 (mit SecurityManager).
Jetzt haben wir aber auf Java 5 und Tomcat 5.5 umgestellt.
Beim Versuch, eine SocketConnection zu dem Remote-Objekt aufzubauen, gibts dann die AccessControlException: access denied (siehe unten).
In der catalina.policy des Tomcat haben wir schon alle Varianten der Permissions ausprobiert, ohne Erfolg.
Der Inhalt der Policy-Datei ist Tomcat-Standard + folgende Einträge für unsere Anwendung:
<pre>
// ===== WEBAPP =====
grant codeBase "file:${catalina.home}/webapps/hsi_e/-" {
permission java.security.AllPermission;
permission java.net.SocketPermission "*:1024-", "listen, connect, resolve";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "accessClassInPackage";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission java.lang.RuntimePermission "getClassLoader";
permission javax.jdo.spi.JDOPermission "getMetadata";
};
</pre>
Das Ärgerliche ist ja nun, unter java 1.4 und Tomcat 4 funktioniert alles, mit Java 5 und Tomcat 5.5 nicht mehr.
Gibts noch irgendwelche geheimnisvolle Security-Einstellungen im Tomcat?
Neuerungen in Java 5, die ich noch beachten muss?
Ich denke/hoffe immernoch, dass es sich nur um eine fehlende/fehlerhafte Security-Einstellung handelt.
So langsam macht sich die Verzweiflung breit, bin für jede Hilfe dankbar.
<pre>
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory. Requesting manager rmi://pc46:1099/hsi_e_HSPlanCS
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory. Got manager rmi://pc46:1099/hsi_e_HSPlanCS
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory ############## Manager-Object is: HSPlanCSManagerImpl_Stub[UnicastRef [liveRef: [endpoint:[192.168.0.46:32923](remote),objID:[7ff040ff:10a3b9cdb00:-8000, 0]]]]
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory ####### Manager received in getCSManager = HSPlanCSManagerImpl_Stub[UnicastRef [liveRef: [endpoint:[192.168.0.46:32923](remote),objID:[7ff040ff:10a3b9cdb00:-8000, 0]]]]
ERROR - de.hsigmbh.hsplano.actions.impex.ImportExportActio n.execute(ImportExportAction.java:121) Sending collection of type PPSWSGruppe FAILED
java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.46:32923 connect,resolve)
at java.security.AccessControlContext.checkPermission (AccessControlContext.java:264)
at java.security.AccessController.checkPermission(Acc essController.java:427)
at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
at java.lang.SecurityManager.checkConnect(SecurityMan ager.java:1034)
at sun.rmi.transport.tcp.TCPChannel.checkConnectPermi ssion(TCPChannel.java:119)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCP Channel.java:148)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:9 4)
at de.hsigmbh.cs.oaClient.imp.HSPlanCSManagerImpl_Stu b.exportBOs(Unknown Source)
.
.
.
ERROR - org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:484) Error calling CSRMI method
java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.46:32923 connect,resolve)
at java.security.AccessControlContext.checkPermission (AccessControlContext.java:264)
at java.security.AccessController.checkPermission(Acc essController.java:427)
at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
at java.lang.SecurityManager.checkConnect(SecurityMan ager.java:1034)
at sun.rmi.transport.tcp.TCPChannel.checkConnectPermi ssion(TCPChannel.java:119)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCP Channel.java:148)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:9 4)
at de.hsigmbh.cs.oaClient.imp.HSPlanCSManagerImpl_Stu b.exportBOs(Unknown Source)
at de.hsigmbh.cs.server.HSPlanCSWrapper.bulkExportObj (HSPlanCSWrapper.java:153)
at de.hsigmbh.hsplano.actions.impex.ImportExportActio n.execute(ImportExportAction.java:121)
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:274)
.
.
.
</pre>
Wir bauen aus unserer Webanwendung heraus eine Verbindung zu RMI-Objekten auf.
Diese kommunizieren dann über das OpenAdaptor-Framework mit einem Fremdsystem.
Die RMI-Aufrufe aus der OpenAdaptor-Anwendung in unsere Webanwendung hinein funktionieren.
Andersherum hat bis jetzt auch alles hervorragend funktioniert mit Java 1.4.2 und Tomcat 4.1 (mit SecurityManager).
Jetzt haben wir aber auf Java 5 und Tomcat 5.5 umgestellt.
Beim Versuch, eine SocketConnection zu dem Remote-Objekt aufzubauen, gibts dann die AccessControlException: access denied (siehe unten).
In der catalina.policy des Tomcat haben wir schon alle Varianten der Permissions ausprobiert, ohne Erfolg.
Der Inhalt der Policy-Datei ist Tomcat-Standard + folgende Einträge für unsere Anwendung:
<pre>
// ===== WEBAPP =====
grant codeBase "file:${catalina.home}/webapps/hsi_e/-" {
permission java.security.AllPermission;
permission java.net.SocketPermission "*:1024-", "listen, connect, resolve";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "accessClassInPackage";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission java.lang.RuntimePermission "getClassLoader";
permission javax.jdo.spi.JDOPermission "getMetadata";
};
</pre>
Das Ärgerliche ist ja nun, unter java 1.4 und Tomcat 4 funktioniert alles, mit Java 5 und Tomcat 5.5 nicht mehr.
Gibts noch irgendwelche geheimnisvolle Security-Einstellungen im Tomcat?
Neuerungen in Java 5, die ich noch beachten muss?
Ich denke/hoffe immernoch, dass es sich nur um eine fehlende/fehlerhafte Security-Einstellung handelt.
So langsam macht sich die Verzweiflung breit, bin für jede Hilfe dankbar.
<pre>
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory. Requesting manager rmi://pc46:1099/hsi_e_HSPlanCS
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory. Got manager rmi://pc46:1099/hsi_e_HSPlanCS
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory ############## Manager-Object is: HSPlanCSManagerImpl_Stub[UnicastRef [liveRef: [endpoint:[192.168.0.46:32923](remote),objID:[7ff040ff:10a3b9cdb00:-8000, 0]]]]
INFO - de.hsigmbh.cs.server.HSPlanORMIFactory ####### Manager received in getCSManager = HSPlanCSManagerImpl_Stub[UnicastRef [liveRef: [endpoint:[192.168.0.46:32923](remote),objID:[7ff040ff:10a3b9cdb00:-8000, 0]]]]
ERROR - de.hsigmbh.hsplano.actions.impex.ImportExportActio n.execute(ImportExportAction.java:121) Sending collection of type PPSWSGruppe FAILED
java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.46:32923 connect,resolve)
at java.security.AccessControlContext.checkPermission (AccessControlContext.java:264)
at java.security.AccessController.checkPermission(Acc essController.java:427)
at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
at java.lang.SecurityManager.checkConnect(SecurityMan ager.java:1034)
at sun.rmi.transport.tcp.TCPChannel.checkConnectPermi ssion(TCPChannel.java:119)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCP Channel.java:148)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:9 4)
at de.hsigmbh.cs.oaClient.imp.HSPlanCSManagerImpl_Stu b.exportBOs(Unknown Source)
.
.
.
ERROR - org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:484) Error calling CSRMI method
java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.46:32923 connect,resolve)
at java.security.AccessControlContext.checkPermission (AccessControlContext.java:264)
at java.security.AccessController.checkPermission(Acc essController.java:427)
at java.lang.SecurityManager.checkPermission(Security Manager.java:532)
at java.lang.SecurityManager.checkConnect(SecurityMan ager.java:1034)
at sun.rmi.transport.tcp.TCPChannel.checkConnectPermi ssion(TCPChannel.java:119)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCP Channel.java:148)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:9 4)
at de.hsigmbh.cs.oaClient.imp.HSPlanCSManagerImpl_Stu b.exportBOs(Unknown Source)
at de.hsigmbh.cs.server.HSPlanCSWrapper.bulkExportObj (HSPlanCSWrapper.java:153)
at de.hsigmbh.hsplano.actions.impex.ImportExportActio n.execute(ImportExportAction.java:121)
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:274)
.
.
.
</pre>