Tag: ee

JavaEE解决方案配置最佳实践

我们构建3层企业解决方案,通常由几个webapp和ejbjar模块组成,这些模块都与​​数据库通信并具有多个外部集成点。 每个模块通常都需要自己的配置,可以改变解决方案的生命周期。 部署它变成了一场噩梦,因为现在我们有18个属性文件,必须记住这些文件才能复制并配置为设置数据源,队列,内存要求等。 我希望能有更好的方式,但不乐观。 我们考虑/使用的一些选项,每个选项都有它的优点和缺点: 使用多个maven项目和持续集成(例如,hudson或jenkins)来构建一个配置jar,其中包含每个环境(dev,qa,prod)的所有属性文件,然后将所有内容捆绑为EAR。 但是,在需要时,生产中的事情不容易改变。 将大多数设置放在数据库中,并有一个简单的屏幕来修改它。 在内部,我们可以拥有一个可以读取和修改值的通用配置服务EJB。 每个模块都可以拥有一个具有特定getter和setter的自定义扩展版本。 版本控制所有属性文件,然后在生产时检查它,并在进行更改后将其检入生产分支。 有了所有这些,你仍然需要以容器特定的方式配置数据源和队列等:(

使用HornetQ在JBoss 7中使用JMS队列的’持久’属性是什么意思?

在使用HornetQ在JBoss 7上配置JMS队列期间(基于standalone-full.xml配置),我注意到一个属性’持久’。 我浏览了几个来源,其中许多人表示队列总是“持久”,这意味着即使在发送时潜在的接收器处于非活动状态,也会始终传递消息。 JBoss 7 HornetQ中的这个属性是指临时队列吗? 或者此属性是否指某种非临时非持久队列?

什么是Java EE 7属性文件配置的最佳实践建议?

应用程序配置在哪里属于现代Java EE应用程序? 人们有什么最佳实践建议? 通过应用程序配置,我的意思是设置连接设置到其他盒子上的服务,包括外部服务(例如Twitter和我们的内部Cassandra服务器……用于诸如主机名,凭证,重试尝试之类的东西)以及与业务逻辑相关的东西(事物)一个人可能会被诱惑作为常量存储在类中,例如某些东西过期等等。 假设: 我们使用单个EAR文件部署到Java EE 7服务器(Wildfly 8.1),该文件包含多个战争和一个ejb-jar。 我们将部署到各种环境:unit testing,本地开发安装,基于云的UAT基础架构,压力测试和生产环境。 我们的许多房产会因这些环境而异。 如果这是人们推荐的最佳实践,我们不反对将属性配置耦合到DI框架。 所有这些都是为了新的开发,因此我们不必遵守传统的要求或限制。 我们非常关注当前的现代最佳实践。 配置是属于EAR的内部还是外部? 如果在 EAR 之外 ,哪里以及如何最好地可靠地访问它们? 如果在 EAR 内部 ,我们可以将它存储在类路径中的任何位置,以便在执行期间轻松访问。 但是我们必须在每次配置更改时重新组装(并且可能重新构建)。 由于我们将拥有多个环境,因此我们需要一种方法来区分EAR中的文件。 我在这里看到两个选项: 利用预期的文件名(例如cassandra.properties ),然后构建多个特定于环境的EAR(例如, appxyz-PROD.ear )。 构建一个EAR(例如appxyz.ear )并将所有各种环境配置文件放入其中,将环境变量附加到每个配置文件名(例如cassandra-PROD.properties )。 当然还要添加一个环境变量(到vm或其他),以便代码知道要拾取哪个文件。 人们可以推荐哪些最佳实践来解决这一共同挑战? 谢谢。

如何正确地向服务器validationAngularJS客户端

我正在构建一个使用RESTful API(Jersey)的AngularJS Web应用程序。 在服务器端,我使用的是Java Application Server(详见Glassfish 4)。 我的设置如下: AngularJS webapp作为单个war文件部署到Java EE Application服务器。 RESTfulAPI(和后端逻辑)也作为war文件部署到同一Java EE应用程序服务器。 AngularJS webapp调用REST API来获取所需的数据。 RESTful API: /api/public/*用于公共访问限制(例如/ api / public / users / signup注册为新用户)。 允许任何用户访问此区域。 无需登录 /api/private/*用于限制访问(例如/ api / private / account / {id}以检索某些帐户特定数据) 私有资源受Java EE内部安全性概念的保护(有关web.xml的详细信息,请参阅下文)。 在web.xml PRIVATE REST API /private/* GET POST HEAD PUT OPTIONS TRACE DELETE Have to be a […]

如何使用java创建oAuth请求?

我需要使用oAuth与Viagogo网站建立联系。 参考他们的文档,我需要创建一个类似于下面的请求 Using the example in step 1A, this means you may generate a signature base string that looks like the following: GET&http%3A%2F%2Fapi.viagogo.net%2FPublic%2FSimpleOAuthAccessRequest&oauth_consumer_key%3Dtestkey%26oauth_nonce%3Dmyn0nc3%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1292404912%26oauth_version%3D1.0%26scope%3DAPI.Public 我正在使用以下代码,但是当我对第1,2行进行注释时,它会返回未经授权的错误 ,当我使用它们时,它会显示oauthService.signRequest返回void。 TradeKingAPI.java import org.scribe.builder.api.DefaultApi10a; import org.scribe.model.Token; public class TradeKingAPI extends DefaultApi10a { @Override public String getRequestTokenEndpoint() { return “http://api.viagogo.net/Public/SimpleOAuthAccessRequest”; } @Override public String getAccessTokenEndpoint() { return “http://api.viagogo.net/Public/SimpleOAuthAccessRequest”; } @Override public String […]

log4j,slf4j和logback有什么区别?

我对这三个记录器库有点困惑。 看起来他们可以在java日志记录中做类似的事情……

Tomcat 7上的Servlet 3异步任务

我正在尝试使用基于其异步支持的Servlet 3.0和Comet模式实现简单聊天。 我受到这篇文章的启发: http : //www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html?page = 3 我的servlet看起来像这样。 @WebServlet(name=”chatServlet”, urlPatterns={“/ChatServlet”}, asyncSupported=true) public class ChatServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { AsyncContext aCtx = request.startAsync(request, response); ServletContext appScope = request.getServletContext(); List watchers = (List) appScope.getAttribute(“watchers”); watchers.add(aCtx); //register the watcher } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, […]

BufferedReader.readLine()不读取并挂起系统(等待)

BufferedReader.readLine()不读取并挂起system(wait) 。 InputStream istrm = runtimeProcess.getInputStream(); InputStreamReader istrmrdr = new InputStreamReader(istrm); BufferedReader buffrdr = new BufferedReader(istrmrdr); System.out.println(“4”); String data; String st; System.out.println(“4a”); while (!(st=buffrdr.readLine()).isEmpty()) { System.out.println(“5 in loop”); }

使用JPA / JTA / JBOSS / CDI不会持久保存对象

请帮助我理解为什么对象不会被以下代码持久化。 它抛出javax.persistence.TransactionRequiredException:JBAS011469:执行此操作需要事务(使用事务或扩展持久性上下文) public class OrganizationRepositoryImpl implements OrganizationRepository { @PersistenceContext(unitName=”usermanagement”,type=PersistenceContextType.TRANSACTION) private EntityManager em; public void save(Organization organization) { try { em.persist(organization); }catch(Exception e) { e.printStackTrace(); } } } 但是如果我使用@Stateless注释(Now ejb)注释该类,则对象开始变为持久化 @Stateless public class OrganizationRepositoryImpl implements OrganizationRepository { @PersistenceContext(unitName=”usermanagement”,type=PersistenceContextType.TRANSACTION) private EntityManager em; public void save(Organization organization) { try { em.persist(organization); }catch(Exception e) { e.printStackTrace(); } } } […]

优雅的unproxy Hibernate对象方式

我正在使用Jax-RS和GSON创建Web服务。 现在,GSON无法转换HibernateProxy对象,我有一些问题。 我有一个API,所以我可以急切加载和延迟加载。 当我想要eagerload时,我使用Hibernate.initialize(…)。 但是,这似乎并不能保证对象不被代理? 那么你何时,何时以及如何解开对象? 当对象也可能与其他需要不复制的对象有关时,你如何处理这个?