- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将单例 EJB 公开为 Restful 服务;要求是通过 Rest API 启动计时器。因为这将是 Web 应用程序,所以我将 ejb 类打包到 war 文件中。我能够成功部署 bean 并调用 Web 服务,但无法启动计时器,因为 @Resource 注释没有在上述单例 ejb 中注入(inject) SessionContext(也尝试使用无状态 session bean)。调试时,我看到 SessionContext 对象为空。关于如何在这种情况下使计时器服务工作的任何建议?以下是详细信息:
TimerSessionBean.java:
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Singleton;
import javax.ejb.Timer;
import javax.ejb.Timeout;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Singleton
@Path("/config")
public class TimerSessionBean {
@Resource
private SessionContext context;
@GET
@Path("{id}")
public void createTimer(@PathParam("id") long duration) {
context.getTimerService().createTimer(duration, "Hello World!");
}
@Timeout
public void timeOutHandler(Timer timer) {
System.out.println("timeoutHandler : " + timer.getInfo());
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
AppConfig.java:
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/")
public class AppConfig extends Application {
@Override
@SuppressWarnings("unchecked")
public Set<Class<?>> getClasses() {
Set<Class<?>> set = new HashSet<Class<?>>();
set.add(TimerSessionBean.class);
return set;
}
}
服务器日志摘录:
20:09:08,850 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named TimerSessionBean in deployment unit deployment "myapp-1.0.war" are as follows:
java:global/myapp-1.0/TimerSessionBean!app.ws.resources.TimerSessionBean
java:app/myapp-1.0/TimerSessionBean!app.ws.resources.TimerSessionBean
java:module/TimerSessionBean!app.ws.resources.TimerSessionBean
java:global/myapp-1.0/TimerSessionBean
java:app/myapp-1.0/TimerSessionBean
java:module/TimerSessionBean
最佳答案
您正在将 ejb 打包到一个 war 文件中,这意味着您正在使用 EJB 3.1 Lite那是一个reduced set ejb 特性。我不确定为什么没有注入(inject) SessionContext 实例,但请记住,TimerService 在此简化版本的 ejb 规范中不可用。
关于java - @Resource 没有在 jboss 7 中注入(inject) SessionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352126/
我正在使用 Glassfish 4 来部署应用程序。它曾经有一个 EJB,其中 SessionContext 通过 @Resource 注释注入(inject)。 @Stateless @Declar
我将 SessionContext 作为资源注入(inject) EJB(实现容器管理的事务): @Stateless(name = "XXX", mappedName = "PPP-MMM-CCC"
在 Java EE 上下文中,特别是在 CDI 中 ApplicationScoped对象,我需要强制回滚容器管理的事务。 (它是 JPA(事务)操作和一些文件系统操作的组合,后者并不是真正的事务性操
我有一个简单的 (webprofile) EJB 3.1 应用程序并尝试确定 @ApplicationScoped CDI Bean 中的当前用户,所以我使用: Principal callerPri
我不确定以下问题的正确答案是什么。 A developer writes a stateful session bean FooBean with two local business interfa
在 EJB 项目中,我需要替换“javax.ejb.SessionContext”中的调用主体名称。我使用 Jboss AS 6.0 Final 作为应用服务器。 我定义了一个扩展 UsernameP
在 EJB2 ,当调用另一个(本地/远程)bean 时,需要在 EJB 中使用 getEJBBusinessObject() 方法来传递对自身的引用。 是否同样适用于 EJB3 ? 例如 @State
我有一个方法,如果该人具有特定角色并且他们与 JIRA 中的特定组相关联,则可以调用该方法。由于 JIRA 中的组是动态的,因此我无法为每个 JIRA 组分配一个角色。 @DeclareRoles({
由于各种原因,我需要手动查找 SessionContext。在JBoss5中,解决方案 InitialContext initialContext = new InitialContext(); Se
背景: 我正在使用使用 Java 安全性的程序化身份验证(基本身份验证)。我有一个无状态 session bean(EJB 3)。我可以注入(inject) Sessioncontext 以获取安全主
我正在使用 Java EE 6,这是第一次使用 jax-rs 并且我有这个资源类,但我不知道为什么在访问服务时没有检索到我的 session 。登录工作正常,并且可以在应用程序的其他部分检索主体。 @
我需要编写一个 session bean,在代码中的某个位置检查当前用户是否具有某些角色。 为了对我的 EJB3 进行单元测试,我正在尝试 OpenEJB。我按照他们的例子 testing secur
我将单例 EJB 公开为 Restful 服务;要求是通过 Rest API 启动计时器。因为这将是 Web 应用程序,所以我将 ejb 类打包到 war 文件中。我能够成功部署 bean 并调用 W
SessionContext.getBusinessObject() 在文档中描述如下, Obtain an object that can be used to invoke the current
我有一个使用 Keycloak 保护的 JEE 服务 (JaxRx),身份验证有效,但是当我想使用 @RolesAllowed 应用安全性时,我得到了 EJBAccessException。 该服务部
我有一个 EJB 类,它具有 @Resource private SessionContext objSessionContext; 如果我为此属性提供 setter 和 getter,注入(inje
我收到以下 NullPointerException: Caused by: java.lang.NullPointerException at FacadeBean.createRegistrati
我的工作是使用 Servlet 编写一种 Web 服务适配器,然后调用适配器 EJB(SOAP Web 服务),而适配器 EJB 又调用现有的服务方法(也是 EJB)。现有的架构基于EJB 2.0,我
我是一名优秀的程序员,十分优秀!