我对 JBoss 不太有经验,并且在运行 EJB 调度程序时遇到问题。
有一个应用程序,其中客户端使用客户端证书进行身份验证。因此安全域定义如下:
<security-domains>
...
<security-domain name="my-domain" default-realm="my-client-cert-realm" permission-mapper="default-permission-mapper">
<realm name="my-client-cert-realm" role-mapper="clientCertRole"/>
</security-domain>
</security-domains>
<security-realms>
...
<identity-realm name="my-client-cert-realm" identity="clientCertUser"/>
</security-realms>
现在我尝试添加一个运行如下作业的调度程序:
import javax.ejb.*;
@Singleton
public class MyScheduler {
@Lock(LockType.READ)
@Schedules({
@Schedule(
hour = "*",
minute = "*",
info = "Scheduled job.") })
public void runJob() {
// Run the job
}
}
一旦我尝试启动 jboss,这个组合就会导致错误
09:35:40,526 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") fehlgeschlagen – Adresse: ([("deployment" => "my-app.war")]) – Fehlerbeschreibung: {
"WFLYCTL0412: Erforderliche Dienste, die nicht installiert sind:" => ["jboss.security.security-domain.my-domain"],
"WFLYCTL0180: Dienste mit fehlenden/unverfügbaren Abhängigkeiten" => ["jboss.deployment.unit.\"my-app.war\".component.MyScheduler.CREATE [jboss.security.security-domain.my-domain] fehlt"]
}
如果我从 jboss-web.xml 中删除安全域,那么它会再次工作
<jboss-web>
<!--<security-domain>my-domain</security-domain>-->
<context-root>app</context-root>
</jboss-web>
知道为什么在创建调度程序时缺少安全域以及如何修改配置或代码以使其正常工作吗?或者甚至可能是如何添加调度程序的另一个想法?
问题是,ejb 中需要有一个应用程序安全域
/subsystem=ejb3/application-security-domain=my-application-domain:add(security-domain="my-domain")