将EJB注入Eclipselink SessionCustomizer以提供Oracle模式名称

zb226

在运行于GlassFish(3.1.2.2b5)上的Java EE 6应用程序中,假设您有一个ConfigurationService,它会读取一些属性文件并相应地分发属性值:

@Local
public interface ConfigurationService { ... }

@Singleton  
public class ConfigurationServiceImpl implements ConfigurationService { ... }

还有一个Eclipselink SessionCustomizer,因为需要以编程方式设置应用程序中一个持久性单元(Oracle数据库)的模式名称,即可以从前面提到的属性文件中对其进行配置。SessionCustomizer中配置,persistence.xml并且实现包含对的引用ConfigurationService

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"...
    <persistence-unit name="myPU" transaction-type="JTA">
        <property name="eclipselink.session.customizer" value="MySessionCustomizer"/>
        ...

public class MySessionCustomizer implements SessionCustomizer {
    @EJB
    private ConfigurationService configurationService;
    @Override
    public void customize(Session session) {
        session.getLogin().setTableQualifier(configurationService.getSchemaName());
        ...

是否有可能以ConfigurationService这种方式注入,以便在SessionCustomizer实例化时可用由于ConfigurationService实例仍然为null,即注入尚未发生,因此上述操作失败此观察结果对应于服务器的日志条目。似乎依赖注入机制总是在持久性单元(因此,SessionCustomizer它们)被无效化之后启动的我搞砸周围的各种注释(@Startup@DependsOn(...),...),但无济于事。我的结论是正确的,还是还有另一种方法可以更快地实例化和注入EJB?

德米特里

由于会话定制程序是由EclipseLink创建的(而不是由您的容器创建的),因此容器不负责注入依赖项。

使用JNDI查找。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Django:将参数传递到URL模式名称

来自分类Dev

Django:将参数传递到URL模式名称

来自分类Dev

将EJB注入servlet

来自分类Dev

将符合模式名称的字符串粘贴在一起,并忽略NA

来自分类Dev

在db2中将模式名称作为参数传递-UNIX

来自分类Dev

如何在Pony ORM中使用Oracle模式名称?

来自分类Dev

@从EJB项目中注入bean会提供UnsatisfiedResolutionException

来自分类Dev

如何定义可从任何模式调用而无需指定模式名称的 PUBLIC Oracle 函数?

来自分类Dev

将EJB注入RESTeasy Web服务

来自分类Dev

将JNDI资源注入EJB的collection属性

来自分类Dev

将@Named,@Stateful注入@Singleton EJB

来自分类Dev

将EJB注入Jersey资源类

来自分类Dev

将远程EJB注入Spring时出错

来自分类Dev

Oracle SQL Developer不在触发器DDL中放入模式名称

来自分类Dev

EJB + EclipseLink或Spring + Hibernate

来自分类Dev

EJB + EclipseLink或Spring + Hibernate

来自分类Dev

Pig:关系和模式名称混淆

来自分类Dev

hadoop pig的长模式名称

来自分类Dev

以下方法的设计模式名称

来自分类Dev

如何使用XCB获取模式名称?

来自分类Dev

如何知道emacs的真实模式名称?

来自分类Dev

Pig:关系和模式名称混淆

来自分类Dev

以下方法的设计模式名称

来自分类Dev

MySQL 大写表,模式名称

来自分类Dev

Spacevim 不显示当前模式名称

来自分类Dev

将lodash注入Angular提供程序

来自分类Dev

无法将提供程序注入配置块

来自分类Dev

如何直接将$ http注入提供程序?

来自分类Dev

将服务注入提供者