Tag: java ee

为什么JPA有一个@Transient注解?

Java有transient关键字。 为什么JPA有@Transient而不是简单地使用已经存在的java关键字?

区分不同种类的JSF托pipe豆

我最近阅读了Neil Griffin的这篇文章,对不同种类的JSF Managed-Beans进行了区分,这让我想起了我自己的应用程序中不同bean之间的区别。 要快速总结这个要点: Model Managed-Bean:这种types的托pipebean参与了MVCdevise模式的“Model”关注。 当你看到“模型”这个词 – 想想DATA。 JSF模型bean应该是一个遵循JavaBeandevise模式的POJO,使用getter / setter封装属性。 备份Managed-Bean:这种types的托pipebean参与了MVCdevise模式的“View”关注。 支持bean的目的是支持UI逻辑,并且与JSF视图或Facelet组合中的JSF表单具有1 :: 1的关系。 虽然它通常具有与关联的getter / setter相关联的JavaBean样式的属性,但它们是View的属性 – 而不是底层的应用程序数据模型的属性。 JSF支持bean也可能有JSF actionListener和valueChangeListener方法。 Controller Managed-Bean:这种types的托pipebean参与了MVCdevise模式的“Controller”关注。 控制器bean的目的是执行某种业务逻辑,并将导航结果返回给JSF导航处理程序。 JSF控制器bean通常具有JSF操作方法(而不是actionListener方法)。 支持Managed-Bean:这种types的bean在MVCdevise模式的“View”关注中“支持”一个或多个视图。 典型的用例是将ArrayList提供给出现在多个JSF视图中的JSF h:selectOneMenu下拉列表。 如果下拉列表中的数据是用户特有的,那么这个bean将被保存在会话范围内。 Utility Managed-Bean:这种types的bean为一个或多个JSF视图提供某种types的“实用程序”function。 一个很好的例子就是可以在多个Web应用程序中重用的FileUpload bean。 这对我有意义,在过去的几个小时里,我一直在重构我的代码,并提出了以下有关用户login: AuthenticationController是Controller Managed-Bean的一个例子。 它是请求范围的,具有设置用户名和密码的两个获取者和设置者,以及两种导航方法: authenticate和logout ,成功login时将用户导航到其私有区域,或者在注销时返回到主页面。 UserBean是Support Managed-Bean的一个例子。 它是会话范围的,并且具有一个User类的实例(当你没有通过身份validation时它将是空的)和一个getter和setter,仅此而已。 AuthenticationController将这个用户作为一个托pipe属性( @ManagedProperty(value = "#{userController.user} private User user; ))。validation成功后, AuthenticationController会将托pipe属性设置为实际用户实例,用于login。 任何新的bean都可以作为托pipe属性来抓取用户,如果User类具有包含组名的列表,则可以提取他们需要的数据,例如组成员身份。 这样才能成为分离问题的正确方法吗?

当使用@EJB时,每个托pipebean都得到它自己的@EJB实例吗?

我正在使用JSF 2.2作为Web项目,现在正在实现login页面。 我有一个作为视图的login.xhtml和一个名为UserLoginView的支持bean。 这个bean有一个EJB属性bean private UserService userService (如下所示)。 这是否意味着每个新的UserLoginView都获得一个新的UserService实例? 可以在生产环境中像这样执行它吗?

在struts2应用程序中的会话

我创build了一个Web应用程序,在这个Web应用程序中,如果用户会话存在,我需要维护会话 ,然后只有这样才能让用户看到jsp。 我以前曾经用过jsp servlets,但是我是struts2的新手。 这里我在我的操作类中设置用户名 : 修订的代码 private HttpSession session; public void setSession(HttpSession session) { // TODO Auto-generated method stub0 this.session = session; } public HttpSession getSession() { return session; } public String getLoginStatus(){ session = request.getSession(); session.setAttribute("userName", loginBean.getUsername()); return SUCCESS; } 现在,当一个动作被redirect到下一个页面时,它会显示一次会话值。 之后,在每个页面上,我在会话中find空值。 <% String userName = (String)session.getAttribute("userName"); System.out.println(userName); if(userName == null || userName.equals("") […]

我使用JDBC连接池吗?

我想确定我是否实际使用JDBC连接池。 经过一番研究,实现起来似乎太简单了。 实际上比常规连接更容易,所以我想validation一下。 这是我的连接类: public class DatabaseConnection { Connection conn = null; public Connection getConnection() { BasicDataSource bds = new BasicDataSource(); bds.setDriverClassName("com.mysql.jdbc.Driver"); bds.setUrl("jdbc:mysql://localhost:3306/data"); bds.setUsername("USERNAME"); bds.setPassword("PASSWORD"); try{ System.out.println("Attempting Database Connection"); conn = bds.getConnection(); System.out.println("Connected Successfully"); }catch(SQLException e){ System.out.println("Caught SQL Exception: " + e); } return conn; } public void closeConnection() throws SQLException { conn.close(); } } […]

由于CDI / Weld中的@Named,JavaEE6中的@ManagedBeans是否已过时?

由于CDI(及其实现焊接),JEE6中的每个POJO都可以用@Named注释,这使得POJO可以被视图访问。 这是否意味着ManagedBeans现在已经完全过时了? 还是我错过了@ManagedBean仍然有意义的东西?

什么是安装Java EE应用程序的好的InstallAnywhere替代品?

您build议使用哪种(商业或免费)安装程序工具来replaceInstallAnywhere作为Java EE应用程序的安装程序? 你特别喜欢什么,它有什么缺点? 一些要求: 必须支持运行自定义Java代码作为安装过程的一部分 必须支持Windows,包括Windows Server 2008等最新的64位版本; 支持其他目标操作系统是一个加号 必须能够在Windows上将捆绑的应用程序服务器(如Resin或Tomcat )作为服务安装 必须支持复制和移动文件,编辑configuration文件,解压缩ZIP等基本的东西。 (必须支持捆绑特定版本的JRE;至less要包含一个ZIP文件才能解压缩) 编辑:更多几点: 优选地,不依赖于目标机器上预装的JRE(或任何其他第三方运行时环境或库); 换句话说,可以产生独立的Windows .exe(或.msi) 该工具最好是跨平台的,这样安装程序的开发可以在Linux,Windows或Mac上完成。 应该最好有一个体面的graphics用户界面将安装程序放在一起。 但是,一旦完成,就必须跳过GUI并使安装程序构build自动构build过程的一部分。 编辑 :我发布了一个单独的答案,关于我们最终select什么和为什么。

我可以使用Java EE webapp中的Windows身份validation连接到SQL Server吗?

我目前正在研究如何使用Windows身份validation而不是SQL Server身份validation从我的Java EE Web应用程序连接到SQL Server数据库。 我正在使用Tomcat 6.0运行这个应用程序,并使用Microsoft JDBC驱动程序。 我的连接属性文件如下所示: dbDriver = com.microsoft.sqlserver.jdbc.SQLServerDriver dbUser = user dbPass = password dbServer = localhost:1433;databaseName=testDb dbUrl = jdbc:sqlserver://localhost:1433 使用SQL Server身份validation时,以这种方式连接到SQL Server数据库时没有问题。 有什么办法可以检索用户的Windows身份validation的凭据,并使用SQL Server的身份validation? 更新 :我知道在ASP.net有一种方法来设置Windows身份validation访问的Web应用程序,这正是我所期待的,除了我想传递到SQL Server访问数据库的标记。

任何方式来分享tomcat的不同应用程序之间的会话状态?

我们希望将工作应用程序分成两个不同的.war文件,以便能够更新一个应用程序而不会影响其他应用程序。 每个webapp将有不同的用户界面,不同的用户和不同的部署时间表。 最简单的path似乎是共享相同的会话,所以如果应用程序设置session.setAttribute("foo", "bar")应用程序B将能够看到它。 有没有办法在同一个Tomcat实例中为这两个应用程序共享HttpSession状态? 我们的应用程序运行在一个专用的Tomcat 5.5上,没有其他的应用程序在同一个tomcat实例上运行,所以关于会话共享的任何安全问题都不成问题。 我们正在运行多个Tomcat实例,但平衡器正在使用粘性会话。 如果这是不可能的,或者这个会话共享是一个非常糟糕的主意,请发表评论。

如何在WAR中使用注释定义servletfilter的执行顺序

如果我们在WAR自己的web.xml定义webapp特定的servletfilter,那么filter的执行顺序将与它们在web.xml中定义的顺序相同。 但是,如果我们使用@WebFilter注释来定义这些filter,那么filter的执行顺序是什么,以及如何确定执行顺序?