如何授权 Java Batch 作业,以便它可以从 WebSphere Liberty 中的启动 Bean 运行?



我正在尝试从启动 Bean 中提交一个基本的批处理作业,这给了我一条错误消息"未经身份验证的用户无权启动批处理作业"。

这是我的启动豆:

@Singleton
@Startup
public class ControllerBean {
@PersistenceContext(unitName = "item-persister")
EntityManager entityManager; 
@PostConstruct
public void initialize() { 
JobOperator jobOperator = BatchRuntime.getJobOperator();
long execID = jobOperator.start("testjob", null);
}
}

在我的服务器.xml中,我配置了一个用户名和密码:

<basicRegistry id="basic" realm="ibm/api">
<user name="bob" password="bobpwd"/>
</basicRegistry>
<authorization-roles id="com.ibm.ws.batch">
<security-role name="batchAdmin">
<user name="bob"/>
</security-role>
</authorization-roles>

如何正确进行身份验证,以便我的作业可以由启动 Bean 运行?

一个简单的方法是:

配置运行方式标识

您需要将@RunAs注释值与服务器配置对齐。

在服务器配置(服务器.xml(中:

<application name="MyApp" ... >
<application-bnd>
<security-role name="JOBSTARTER">
<user name="bob" />
<run-as userid="bob" password="bobpwd"/>
</security-role>
</application-bnd>
</application>

在调用 JobOperator 的 Java 代码中:

@Singleton
@Startup
@RunAs("JOBSTARTER")
public class ControllerBean {
@PostConstruct
public void initialize() { 
JobOperator jobOperator = BatchRuntime.getJobOperator();
long execID = jobOperator.start("testjob", null);
}
}

在代码段中,您具有基本注册表和映射到批处理授权角色的用户。 您只需要通过@RunAs在线程上建立此用户即可。

相关内容

  • 没有找到相关文章

最新更新