如何授权 Java 批处理作业,以便它可以从 WebSphere Liberty 中的启动 bean 运行?
How to authorize a Java Batch job so it can run from a startup bean in WebSphere Liberty?
我正在尝试从我的启动 bean 中提交一个基本的批处理作业,它给我一条错误消息 "User UNAUTHENTICATED is not authorized to start batch jobs."
这是我的启动 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 身份
您需要将 @RunAs
注释值与服务器配置对齐。
在服务器配置中 (server.xml):
<application name="MyApp" ... >
<application-bnd>
<security-role name="JOBSTARTER">
<user name="bob" />
<run-as userid="bob" password="bobpwd"/>
</security-role>
</application-bnd>
</application>
在您的 Java 调用 JobOperator 的代码中:
@Singleton
@Startup
@RunAs("JOBSTARTER")
public class ControllerBean {
@PostConstruct
public void initialize() {
JobOperator jobOperator = BatchRuntime.getJobOperator();
long execID = jobOperator.start("testjob", null);
}
}
在您的代码段中,您将基本注册表和用户映射到批处理授权角色。您只需要通过 @RunAs
.
在线程上建立此用户
我正在尝试从我的启动 bean 中提交一个基本的批处理作业,它给我一条错误消息 "User UNAUTHENTICATED is not authorized to start batch jobs."
这是我的启动 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 身份
您需要将 @RunAs
注释值与服务器配置对齐。
在服务器配置中 (server.xml):
<application name="MyApp" ... >
<application-bnd>
<security-role name="JOBSTARTER">
<user name="bob" />
<run-as userid="bob" password="bobpwd"/>
</security-role>
</application-bnd>
</application>
在您的 Java 调用 JobOperator 的代码中:
@Singleton
@Startup
@RunAs("JOBSTARTER")
public class ControllerBean {
@PostConstruct
public void initialize() {
JobOperator jobOperator = BatchRuntime.getJobOperator();
long execID = jobOperator.start("testjob", null);
}
}
在您的代码段中,您将基本注册表和用户映射到批处理授权角色。您只需要通过 @RunAs
.