Tag: java ee 6

JCA 1.6 ResourceAdapter是否需要ManagedConnectionFactory?

我以前写了一个JCA资源适配器 。 但是,现在我发现自己只能编写一个来访问BootstrapContext及其相关的WorkManager ,并且没有其他原因。 如果我正确地阅读规范 – 这就是我的问题 – 看起来如果我希望某人能够以符合规范的方式使用我的资源适配器,我仍然需要实现ManagedConnectionFactory ,因为它看起来像只有ManagedConnectionFactory实现提供的用户连接工厂才有资格通过@Resource注释注入。 来吧,再看一遍; 我会等。 🙂 在一个完美的世界中,我想编写我的ResourceAdapter实现,使用@Connector对其进行注释,指定所有@ConfigProperty位,将其打包在.rar文件中,然后完成它。 但是,在我看来,规范有效地强制要求消费者(在我的情况下是无状态EJB)和资源适配器模块之间的所有通信都应该通过用户连接工厂来完成。 例如,第6.10.1节说: 资源适配器必须提供以下接口的实现: javax.resource.spi.ManagedConnectionFactory javax.resource.spi.ManagedConnection javax.resource.spi.ManagedConnectionMetaData 但是第18节 – 关于注释的部分 – 似乎没有规定以任何有意义的方式强制执行。 确实如此吗? 我想它一定是,但我很想知道那些已经组装了1.6资源适配器的人。

JPA嵌套事务和锁定

考虑这种情况,在不同的无状态bean中存在两种方法 public class Bean_A { Bean_B beanB; // Injected or whatever public void methodA() { Entity e1 = // get from db e1.setName(“Blah”); entityManager.persist(e1); int age = beanB.methodB(); } } public class Bean_B { //Note transaction @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void methodB() { // complex calc to calculate age } } BeanA.methodA启动的事务将被挂起,并且将在BeanB.methodB中启动新事务。 如果methodB需要访问由methodA修改的同一实体,该怎么办? 这会导致死锁。是否有可能在不依赖隔离级别的情况下阻止它?

Weld / CDI最好的调试技巧是什么?

Java EE 6的优点之一是新的dependency injection框架 – 带有Weld参考实现的CDI – 它促使我们以一种与实现无关的方式开始内部迁移到JSR-330,明确的目标是能够拥有核心jar被冻结,然后能够添加额外的jar子,提供新的模块替换核心jar中的function。 我现在正在与Weld一起完成上述工作,并且坦率地说,封面背后有太多的魔力。 无论是有效还是无效,默认情况下它不会提供很多帮助,因此您可以调查出错并修复它。 我希望有切换开关可以轻松实现以下function: 扫描了哪些类路径条目以及在哪里? 结果是什么? 什么豆可以注射哪个类? 是什么导致给定的bean以后不被考虑? 一个给定的jar子? 换句话说,我需要更详细地看待决策过程。 出于某种原因,Guice不需要这样做,也许是因为魔法少得多,也许是因为错误消息非常好。 您如何调试Weld应用程序,以及它有多大帮助?

使用@ElementCollection,@ MapKeyJoinColumn在执行多对多关系时引用密钥问题

我正在尝试多对多关系,团队成员可以处理多个项目,一个项目可以有多个团队成员,表结构如下, create table TBL_PROJECT_ONE( id integer primary key generated always as identity(start with 12,increment by 3), name varchar(50) ) create table TBL_TEAM_MEMBER_ONE( id integer primary key generated always as identity(start with 7,increment by 5), name varchar(50), salary integer ) create table EMP_PRJ_CADRE( MEMBER_ID integer references TBL_TEAM_MEMBER_ONE, PRJ_ID integer references TBL_PROJECT_ONE, CADRE varchar(10), constraint PK_001_EMP_TEAM primary […]

如何使用不同的范围注入相同类的对象?

在简单性和正确性方面,注入具有不同范围的同一类对象的最佳方法是什么? 在servlet中,我想要注入具有不同范围的同一类的对象。 还是不知道是否要使用jsf。 简单性:为每个范围制作Qualifier和制作方法太多了; 在beans.xml创建一个接口,两个类以及添加和替换也是太多了; 使用Address#isCurrent()方法没有意义。 正确性:JSR299,3.11说: 不建议使用@Named作为注入点限定符。 还是不知道为什么。 虽然在注入点使用@Named可以与@ApplicationScoped和@RequestScoped一起使用,但不能与@SessionScoped 。 请参阅下面的命名代码段 。 在spring,这很容易: spring片段 名为代码段 /* Address class */ @Produces @RequestScoped @Named(value=”request”) public Address getNewAddress(){ return new Address(); } @Produces @SessionScoped @Named(value=”application”) public Address getCurrentAddress(){ return new Address(); } /* Servlet */ @Inject @RequestScoped @Named(“request”) private Address newAddress; @Inject @ApplicationScoped @Named(“application”) private Address currentAddress;

弹簧面没有弹簧流动

我正在开始一个新的JSF(2)项目。 我意识到纯粹的JSF有一些限制,我打算在spring放弃。 JSF在spring是一种相对较新的方法(在stackoverflow中甚至没有标签spring-faces :-)),jsp是经典的方式。 我需要对技术堆栈进行最佳调整。 1)我是否也需要使用弹簧网流量? 2)是否可以使用弹簧面(这似乎是网络流量的一部分)+ spring mvc + JPA? 3)这样的配置有什么好的例子吗?

JPA查询选择“IN”子句中的多个值

我想为以下SQL语句创建JPA参数化查询 select * from car where (colour, speed) in ((‘red’, 50), (‘blue’, 70)) 此查询返回预期结果 entityManager.createQuery(“from Car c where (c.colour, c.speed) in ((‘red’, 50), (‘blue’, 70))”, Car.class).getResultList(); 如何将当前硬编码的值作为参数传递? 我提出了以下“工作”解决方案。 但我担心无法保证所有参数对都按预期顺序传递? 我不想让速度为“50”的“蓝色”汽车。 编辑:删除因为它不能按预期工作,另请参阅@Gas评论

Java EE 6应用程序客户端登录

我是Java EE的新手,刚开始使用我想创建的应用程序时遇到了很多麻烦。 我想要的是连接到EJB项目的Swing应用程序客户端。 我正在使用Glassfish v3.1.1。 到目前为止我所拥有的是两个无状态bean,其中一个是使用@DeclareRoles和Glassfish中的JDBC领域保护的,以及客户端的开头。 运行客户端时,您可以选择用户名,键入密码,然后登录。 如果您使用正确的密码,一切正常(客户端控制台吐出一些“安全”信息)。 但是,如果您输入的密码不正确,则会被永久锁定。 InitialContext.lookup不会再次调用CallbackHandler来检查新密码,它会继续使用不正确的凭据。 有人可以告诉我如何正确地做到这一点? 我是否在这种情况下使用了正确的方法 – 网上有大量的信息,但基本上我尝试做的是0个例子? 一切似乎只适用于J2EE或Servlets! 这是一些相关的代码。 与GlassFish ejb-jar.xml中: Admin Admin Employee Employee LoginBean ejb/machineryhub/LoginService EmployeeBean ejb/machineryhub/EmployeeService username_password machineryhub true 我是否需要将块添加到我创建的每个安全bean中? 应用client.xml的: MachineryHub LoginBean Session machineryhub.service.LoginService EmployeeBean Session machineryhub.service.EmployeeService machineryhub.LoginCallbackHandler machineryhub.LoginCallbackHandler: public class LoginCallbackHandler implements CallbackHandler { @Override public void handle(Callback[] clbcks) throws IOException, UnsupportedCallbackException { […]

如何使用JSF2处理多态?

我需要显示/编辑多态实体。 我的抽象类是Person 。 我的具体课程是PhysicalPerson和MoralPerson 每个具体类都有自己的自定义属性。 如何根据实体类使用适当的显示/编辑(复合)组件? 谢谢 ! 🙂

Jetty 8 + EJB 3.1 + JTA + CDI + JPA 2堆栈?

任何人都可以告诉我,目前是否可以通过Jetty“粘合”部分Java EE 6 Web配置文件? 我发现了很多关于将独立EJB 3容器,JTA提供程序等与旧Jetty版本集成的文章,所以如果我可以将它们全部协同工作,我就会更加努力。 我想组装一个Servlet 3.0 + CDI + EJB 3.1 + JTA(如果需要,我真正想要的是声明式事务管理)+ Jetty 8上的JPA 2环境(如果没有可用的Jetty替代品,则为Tomcat 7)。 我的问题是:可以做到吗? 有人设法做到了吗? 有关获取OpenEJB,Atomikos,Weld,EclipseLink和Jetty(或任何其他类似堆栈)一起工作的任何文章? 那里有任何神奇的“全部”pom.xml文件? PS:是的,我知道我可以使用GlassFish(我非常喜欢)。 我只是想知道如何使用Servlet容器获得类似的function,以及两个环境在复杂性,性能,大小,部署速度,硬件资源消耗等方面的比较。