我是WebSphere
的新手,我写了一个ejb
甚至已经部署它。 但是当我尝试访问它。访问安全Ejb的问题
我收到以下错误。问题是绑定或配置安全还是领域?
javax.ejb.EJBAccessException: SERVER(ID = 4773e3aa,主机=本地主机)TRACE START: javax.ejb.EJBAccessException:SECJ0053E:授权失败???调用(Bean)d365-EB_OFSConnectorService-ejb_jar#d365-ModuleConnectorService-ejb.jar#ModuleConnectorServiceBean processOFS:java.lang.String:1未被授予任何所需的角色:d365user at com.ibm.ws.security.core .SecurityCollaborator.performAuthorization(SecurityCollaborator.java:626) 在com.ibm.ws.security.core.EJSSecurityCollaborator.preInvoke(EJSSecurityCollaborator.java:265) 在com.ibm.ws.ejbcontainer.runtime.EJBSecurityCollaboratorAdapter.preInvoke(EJBSecurityCollaboratorAdapter的.java:82) 在com.ibm.ws.ejbcontainer.runtime.EJBSecurityCollaboratorAdapter.preInvoke(EJBSecurityCollaboratorAdapter.java:43) 在com.ibm.ejs.container.EJSContainer.notifySecurityCollaboratorPreInvoke(EJSContainer.java:3895) 在玉米.ibm.ejs.container.EJSContainer.preInvokeAfterActivate(EJSContainer。的java:3825) 在com.ibm.ejs.container.EJSContainer.EjbPreInvoke(EJSContainer.java:3046) 在com.kaiser.services.ofsconnector.ejb.EJSRemote0SLModuleConnectorServiceBean_8c753384.processOFS(EJSRemote0SLModuleConnectorServiceBean_8c753384.java) 在com.kaiser。 services.ofsconnector.ejb._EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie.processOFS__CORBA_WStringValue(_EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie.java:1) 在com.kaiser.services.ofsconnector.ejb._EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie._invoke(_EJSRemote0SLModuleConnectorServiceBean_8c753384_Tie.java) 在com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler( ServerDelegate.java:669) at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:523) at com.ibm.rmi.iiop.ORB.proces S(ORB.java:523) 在com.ibm.CORBA.iiop.ORB.process(ORB.java:1575) 在com.ibm.rmi.iiop.Connection.doRequestWork(Connection.java:3039) 在com.ibm.rmi.iiop.Connection.doWork(Connection.java:2922) at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:64) at com.ibm.ejs.oa.pool。 PooledThread.run(ThreadPool.java:118) at com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1862) SERVER(id = 4773e3aa,host = localhost)TRACE END。
我已经试过在谷歌找它,但没有成功。欢迎提出建议。
更新-1 在我的ejb-jar.xml中,安全性已被定义为
<assembly-descriptor>
<security-role>
<role-name>d365user</role-name>
</security-role>
<method-permission>
<role-name>d365user</role-name>
<method>
<ejb-name>ModuleConnectorServiceBean</ejb-name>
<method-name>*</method-name>
</method>
<method>
<ejb-name>ModuleConnectorServiceBeanOMS</ejb-name>
<method-name>*</method-name>
</method>
</method-permission>
</assembly-descriptor>
IBM-EJB-JAR-bnd.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0">
<session name="ModuleConnectorServiceBean">
<resource-ref binding-name="jdbc/t24DataSource" name="jdbc/d365DataSource"/>
<resource-ref binding-name="jdbc/d365LockingDataSource" name="jdbc/d365LockingDataSource"/>
</session>
<session name="ModuleConnectorServiceBeanOMS">
<resource-ref name="jdbc/d365DataSource" binding-name="jdbc/d365DataSource"/>
<resource-ref name="jdbc/d365LockingDataSource" binding-name="jdbc/d365LockingDataSource"/>
</session>
</ejb-jar-bnd>
如果你仍然在发展,做一个快速尝试删除有关EJB方法的访问注释。这将追踪到网络问题或(更可能)无效的用户角色绑定。 – Leonardo
我已经删除了安全限制并且它可以工作。所以我们可以放心地说,网络中没有问题。 – User27854