在domino上运行java代理抛出安全异常问题

时间:2022-08-02 00:44:19
情况是这样,我用jco(SAP提供的RFC类包)的java代理和Sap进行连接测试,该java代理在notes client上可以正常运行,但把该代理设为在服务器上运行时,就抛出安全异常了。
异常内容如下:
Agent error: java.lang.ExceptionInInitializerError:
Agent error: java.lang.SecurityException: line.separator
Agent error:    at lotus.notes.AgentSecurityManager.checkPropertyAccess(AgentSecurityManager.java:551)
Agent error:    at com.sap.mw.jco.JCO.<clinit>(JCO.java:327)
Agent error:    at JavaAgent.NotesMain(JavaAgent.java:14)
Agent error:    at lotus.domino.AgentBase.runNotes(Unknow Source)
Agent error:    at lotus.domino.NotesThread.run(NotesThread.java:215)

在首次执行该代理时,notes client提示ECL警报,确认信任后,就可以正常运行了。
在Domino的server文档中的安全页,先是把所有的程序访问限制设为‘*’,出现上面的异常,然后全部改为admin并用admin的id再次运行,仍然出现上面的异常。

为什么会这样呢?在notes client运行时,只要在ECL中设定运行访问本地文件系统等设置,就可以正常运行该java代理。而在domino 服务器上,要怎么设置可以达到像在notes设置ECL一样,在domino服务器上运行的代理可以存取服务器上的本地文件系统呢?

这个问题究竟是domino的安全性配置问题?还是sap jco类自身的问题呢?请牛人们指点迷津!敝人感激不禁!谢谢!

8 个解决方案

#1


domino的安全性配置问题,在配置文档里面设置执行无限制和有限制的JAVA代理的权限,设置为*就是允许所有人可以执行这些代码,当然也可以设置为单独的人。

#2


正如我前面说过的,我试过全部设为*,或者是全部设为admin都还是不行。

#3


如果你的服务器是基于WINDOWS平台以外的操作系统,还需要注意是不是有权限去操作你所需要本地文件系统,JAVA代理去访问本地文件系统的时候是以启动DOMINO的身份去进行的,一般是是用户NOTES,需要设置NOTES用户可以存取你所需要的文件或者目录。

#4


我在用jdbc连接数据库时也会出现类似的问题,好像java代理引入包总是不能被很好支持

#5


to maplescloud(花瓣雨) 

"NOTES用户"?  是什么用户?你的话前一句我明白了,后一句不明白,能否再解释一下。另外请顺便介绍一下如何设置Notes用户可以存取本地文件。谢谢你的回复,希望能得到你的进一步指点。谢谢!

#6


我重新写了一个java代理,代理不包括jco(排除jco的问题),直接引用java.io.FileInputStream去打开本地文件。同样的,在本地运行正常,在domino上运行抛出异常,异常和前面的异常类似:
Agent error: java.lang.SecurityException: D:\aaa.txt
Agent error:   at lotus.notes.AgentSecurityManager.checkRead(AgentSecurityManager.java:608)
Agent error:   at java.io.FileInputStream.<init>(FileInputStream.java:75)
Agent error:   at lotus.domino.AgentBase.runNotes(unknown Source)
Agent error:    at lotus.domino.NotesThread.run(NotesThread.java:215)

#7


还有一个地方试试
代理属性里:设置运行时安全等级为
3.允许具有完全管理权限的受限制操作

#8


to GUOTAILC(勇攀高峰)

谢谢你提供的方法,该方法成功的解决了问题!

to maplescloud(花瓣雨) 

谢谢你的关注及回复!

to mason520(林帆)
谢谢你的关注!

#1


domino的安全性配置问题,在配置文档里面设置执行无限制和有限制的JAVA代理的权限,设置为*就是允许所有人可以执行这些代码,当然也可以设置为单独的人。

#2


正如我前面说过的,我试过全部设为*,或者是全部设为admin都还是不行。

#3


如果你的服务器是基于WINDOWS平台以外的操作系统,还需要注意是不是有权限去操作你所需要本地文件系统,JAVA代理去访问本地文件系统的时候是以启动DOMINO的身份去进行的,一般是是用户NOTES,需要设置NOTES用户可以存取你所需要的文件或者目录。

#4


我在用jdbc连接数据库时也会出现类似的问题,好像java代理引入包总是不能被很好支持

#5


to maplescloud(花瓣雨) 

"NOTES用户"?  是什么用户?你的话前一句我明白了,后一句不明白,能否再解释一下。另外请顺便介绍一下如何设置Notes用户可以存取本地文件。谢谢你的回复,希望能得到你的进一步指点。谢谢!

#6


我重新写了一个java代理,代理不包括jco(排除jco的问题),直接引用java.io.FileInputStream去打开本地文件。同样的,在本地运行正常,在domino上运行抛出异常,异常和前面的异常类似:
Agent error: java.lang.SecurityException: D:\aaa.txt
Agent error:   at lotus.notes.AgentSecurityManager.checkRead(AgentSecurityManager.java:608)
Agent error:   at java.io.FileInputStream.<init>(FileInputStream.java:75)
Agent error:   at lotus.domino.AgentBase.runNotes(unknown Source)
Agent error:    at lotus.domino.NotesThread.run(NotesThread.java:215)

#7


还有一个地方试试
代理属性里:设置运行时安全等级为
3.允许具有完全管理权限的受限制操作

#8


to GUOTAILC(勇攀高峰)

谢谢你提供的方法,该方法成功的解决了问题!

to maplescloud(花瓣雨) 

谢谢你的关注及回复!

to mason520(林帆)
谢谢你的关注!