【发布时间】:2017-03-16 21:29:12
【问题描述】:
我是WebSphere 的新手,我写了一个ejb,甚至已经部署了它。
但是当我尝试访问它时。
我收到以下错误。问题出在绑定还是配置安全性或领域?
javax.ejb.EJBAccessException: 服务器(id=4773e3aa,主机=localhost)跟踪开始: javax.ejb.EJBAccessException: SECJ0053E: 授权失败???调用 (Bean)d365-EB_OFSConnectorService-ejb_jar#d365-ModuleConnectorService-ejb.jar#ModuleConnectorServiceBean processOFS:java.lang.String:1 时未授予任何所需角色:d365user 在 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) 在 com.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) 在 com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:523) 在 com.ibm.rmi.iiop.ORB.process(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) 在 com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:64) 在 com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118) 在 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 方法上的访问注释来快速尝试。这将追踪问题到网络或(更有可能)无效的用户->角色绑定。
-
我已经删除了安全限制并且它可以工作。所以我们可以肯定地说网络没有问题。
标签: java websphere ejb-3.0 ejb-3.1 websphere-8