Tag: java ee 6

如何使用常见的JPA实体布局Java EE项目?

我使用maven 3在WAR文件中打包了两个eclipse Java EE 6项目。现在,他们应该在第三个项目中共享JPA实体,因为它们都使用相同的数据库。 在对我的问题进行研究时,我发现了一些提示,例如在persistence.xml中引用了一个常见的jar,但是我没有成功使它工作。 特别问: 1)包含公共实体的项目是否具有persistence.xml文件? 如果是这样,它与其他项目的不同之处是什么? 2)两个项目中引用的常用实体到底有多准确? 我是否在persistence.xml中使用该标记作为参考? 如果是这样,如果MyCommin.jar位于WEB-INF / lib中,“lib / MyCommon.jar”是否是正确的使用方式? 3)如果应用程序在JBoss 6中部署为WAR或爆炸存档,它会有什么不同吗? 4)当通过添加到服务器运行时和发布时在eclipse中部署时,与部署外部eclipse有什么不同吗? 5)所描述的方式是将公共实体放在一个单独的项目中,创建一个JAR并在另一个项目中使用该JAR是一种合理的方式来处理共享公共实体类的问题还是有更好的方法?

Java EE 6和Singletons

任何人都可以解释在Java EE 6应用程序中实现Singleton的完整过程吗? 我假设我不应该以声明静态变量的典型方式创建单例,而应该使用@Singleton注释? 我必须这样做吗? 这只是宣告@Singleton的情况吗?就是这样吗? 我还要上课了吗? 那么我需要做什么才能访问其他类中的单例?

Java EE 6 @Inject懒惰?

我正在进行一些重构和审查我们正在开发的应用程序。 在这样做时我发现注入了更多的豆子,我认为以懒惰的方式装载它们会更适合它们的目的。 我正在使用Java EE 6,并且倾向于使用比EJB注入更多的CDI。 所以问题是是否可以懒惰地注入豆类,如果是这样,你怎么能这样做?

在注入点使用限定符的类型的不满意依赖(使用带有CDI的@Stateful EJB)

我有以下代码来管理两种存储库。 两个存储库类都inheritance了一个接口,以允许重新初始化其资源。 public interface CachingRepository { public void invalidateCache(); } 全局,应用程序范围的回购: @Named(“globalRepo”) @ApplicationScoped public class GlobalRepository implements CachingRepository { private List categories; … @Override public void invalidateCache() { categories = null; } … } 每个用户,会话范围的回购: @Named(“userRepo”) @SessionScoped //@Stateful // <- NOTE HERE public class UserRepository implements CachingRepository, Serializable { private List files; @Override public void […]

“@inject”-ed属性保持为null

我试图将一个服务注入我的bean但它始终为null 。 我收到以下错误:WELD-001000错误解析属性userBean对基础null。 一些代码片段: 的index.xhtml Hello from Facelets #{userBean.name} userbean.java package beans; import Domain.User; import java.io.Serializable; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.inject.Named; import service.UserService; @Named @SessionScoped public class UserBean implements Serializable{ @Inject UserService service; private User user; public UserBean(){ this.user = service.find_user(“foo”); } public String getName(){ return “bar”; } } UserService.java package service; import Domain.User; […]

存储和编辑Java EE应用程序的配置

更新 :在撰写本文之后一年,请参阅我关于此主题的博客文章: http : //blog.ringerc.id.au/2012/07/java-ee-7-needs-improvements-in-app.html …有关此主题的Java EE 7规划讨论的参考。 我主要编写了一个小型Java EE 6应用程序,并且正在使用适当的动态配置界面替换硬编码的首选项。 我不确定 – 或者更具体地说,在哪里 – 存储设置。 必须有一些明显的,“标准”的方式来做到这一点,预期“只是工作”跨越各种框架和容器,但对于我的生活,我找不到它。 我想要的是一种加载和存储设置的简单方法,一种适用于不同应用服务器和操作系统的设置,不需要用户进行任何配置,并且实际上正常工作 。 Java Preferences API是理想的 – 但在Glassfish 3.1下似乎已经破解了。 存储配置的选项理论上包括: 使用容器环境中的上下文参数 使用Java Preferences API存储它们 在某处读取/写入属性文件 使用JPA将它们存储在容器提供的JavaDB中 将它放在从类路径加载的属性文件中 使用系统属性设置配置选项或.properties文件的路径 这似乎是一个基本要求,在容器据称为您提供您可能需要的所有核心服务的环境中,这是一个很好的照顾 – 但所有这些方法都存在问题。 glassfish中的错误呈现(1)不可行,并且在任何情况下,Glassfish Web管理员用户界面都没有任何方法来配置上下文参数,因此您必须使用`asadmin’和一些不太可爱的命令行语法来执行此操作。 上下文参数只能通过ServletContext访问 – 在JSF2,JAX-RS和原始servlet等框架之间无法以一致的方式访问 – 但至少Seam Servlet处理它。 glassfish 中的 另一个错误 是已部署的app和Glassfish中断之间的库版本冲突 (2)。 首选项后端无法将首选项刷新到磁盘,因此重新启动应用程序服务器时,存储的首选项数据将丢失。 Java Preferences API似乎也被认为是J2SE /桌面的东西,尽管它包含在Java […]

jax-rs检索表单参数

我正在尝试使用HttpServletRequest检索从已发布表单传递给jax-rs的一些参数。 但是,我的请求对象始终为我的参数返回空值。 我不是以正确的方式去做这件事吗? 我已经发布了下面的代码,以及一个发送的示例请求。 这是我的服务: @Path(“/”) @Stateless public class HomeController { @Context private HttpServletRequest request; @Context private HttpServletResponse response; @EJB private LoginServiceLocal loginService; @POST @Path(“/authenticate”) @Consumes(“application/x-www-form-urlencoded”) public void authenticate() throws Exception { String email = request.getParameter(“email”); String password = request.getParameter(“password”); if (loginService.authenticate(email, password)) { response.sendRedirect(“/app”); } else { request.setAttribute(“authenticationError”, “Invalid email/password.”); } } } 示例请求: […]

如何在群集环境中使用javax.ejb.Singleton?

我需要在应用程序中维护一个对于集群环境中的所有用户和所有节点都是唯一的简单计数器。 我想过如下使用单例会话bean注释javax.ejb.Singleton: package foo; import javax.ejb.Singleton; @Singleton public class Bean { private int counter; […] } 这看起来很简单,但如果在集群环境中按预期工作,我找不到答案。 群集的每个节点都有自己的实例吗? 当然,我可以将bean保存在数据库中,但它实际上只是一个计数器,这样做会有点过分。 此外,我希望计数器在应用程序崩溃或重新启动时重置,因此持久存在会产生比解决的问题更多的问题。

JBoss AS 6中的QuartzScheduler注入

如何在JBoss AS 6上将QuartzScheduler服务注入我的无状态bean? Quartz服务确实在JBoss AS 6启动期间启动 00:58:38,025 INFO [QuartzScheduler] Scheduler meta-data: Quartz Scheduler (v1.8.3) ‘JBossQuartzScheduler’ with instanceId ‘NON_CLUSTERED’ Scheduler class: ‘org.quartz.core.QuartzScheduler’ – running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool ‘org.quartz.simpl.SimpleThreadPool’ – with 10 threads. Using job-store ‘org.quartz.simpl.RAMJobStore’ – which does not support persistence. and is not […]

如何在CDI中动态创建实例

我们假设我有一个Car类。 在我的代码中,我想创建10辆汽车。 Car类有一些@Inject注释依赖项。 这样做的最佳方法是什么? CDI有一个Provider接口,我可以使用它来创建汽车: @Inject Provider carProvider; public void businessMethod(){ Car car = carProvider.get(); } 不幸的是,如果我没有CarFactory,它有一个带有@Produces注释的方法来创建汽车,那就不行了。 尽管它反映了现实世界我无法在没有工厂的情况下制造汽车,但我宁愿不为所有东西编写工厂。 我只是希望CDI容器像任何其他bean一样创建我的汽车。 你怎么建议我创造那些汽车?