[英]How to invoke custom (java) program on Websphere Liberty Profile startup
[英]How to authorize a Java Batch job so it can run from a startup bean in 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);
}
}
在server.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
批注值与服务器配置对齐。
<application name="MyApp" ... >
<application-bnd>
<security-role name="JOBSTARTER">
<user name="bob" />
<run-as userid="bob" password="bobpwd"/>
</security-role>
</application-bnd>
</application>
@Singleton
@Startup
@RunAs("JOBSTARTER")
public class ControllerBean {
@PostConstruct
public void initialize() {
JobOperator jobOperator = BatchRuntime.getJobOperator();
long execID = jobOperator.start("testjob", null);
}
}
在您的代码段中,您具有基本注册表,并且用户已映射到批授权角色。 您只需要通过@RunAs
在线程上建立此用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.