标签: java-ee-6

EE EE6超过EE5?

我们处于获得Java EE6的边缘(Glassfish v3作为参考实现).计划发布时间是09年12月.虽然仍有相当多的公司正在努力将其代码库转移到EE5(从早期版本),但我们正处于开始开发新产品的奢侈状态,并且可以选择以EE6作为平台来实现.这可能会在稍后阶段避免迁移工作,并受益于EE6中的所有权限化功能.

反对或几个问题(在最前沿做事时,又称使用EE6):

  • 还没有太多的专业知识(博客,书籍,论坛,你自己,...)
  • 很快就会有其他EE6应用服务器(测试版可能在明年初/中期?)
  • 第三方库/框架可能尚未针对EE6进行验证或测试.

一个通用的问题,不会产生具体的答案,但也许你对这个主题的看法?

斯文

java enterprise java-ee java-ee-6 java-ee-5

5
推荐指数
1
解决办法
1511
查看次数

JavaEE 6应用程序(Glassfish v3)中的性能 - 日志记录,DI,数据库操作,EJB,托管Bean

我使用的重要技术有:Glassfish v3,JSF 2.0,JPA 2.0,EclipseLink 2.0.2,log4j 1.2.16,commons-logging 1.1.1.

我的问题是应用程序的某些部分非常慢.我用netbeans 6.8分析功能对此进行了分析.

I.记录 - 我使用log4j和apache commons记录在日志记录文件和控制台中生成日志.日志也出现在glassfish的服务器日志中.我使用记录器如下:

    private static Log logger = LogFactory.getLog(X.class);
    ...
    if (logger.isDebugEnabled()) {
        ...
        logger.debug("Log...");
    }
Run Code Online (Sandbox Code Playgroud)

问题是,有时这样的短语需要花费很多时间(大约800毫秒).当我切换到java.util.logging时,它不是那么糟糕但也很慢(200毫秒乐队).有什么问题?我需要一些日志记录... 更新 - 从Netbeans 6.8切换到Netbeans 6.9.1后解决了慢速日志记录的问题. - 当日志打印到其控制台时,Netbeans 6.8可能非常慢?!所以它与Log4J或公​​共记录没有任何关系.

II.数据库操作:我第一次调用以下EJB的find方法需要2,4秒!其他呼叫仅持续几毫秒.那么为什么第一次手术需要很长时间?这是(仅仅因为)连接建立还是与XFacade的依赖注入有关,以及这些注射何时执行?:

@Stateless
@PermitAll
public class XFacade {
    @PersistenceContext(unitName = "de.x.persistenceUnit")
    private EntityManager em;
    // Other DI's
    ...

    public List<News> find(int maxResults) {
      return em.createQuery(
      "SELECT n FROM News n ORDER BY n.published DESC").setMaxResults(maxResults).getResultList() 
    }
}
Run Code Online (Sandbox Code Playgroud)

III.依赖注入,JNDI查找:DI之间是否存在差异(@EJB ...)和关注性能的InitialContext查找?注入本地,远程和无接口EJB之间是否存在差异(性能视图)?

IV.托管豆 …

performance logging java-ee java-ee-6 glassfish-3

5
推荐指数
1
解决办法
2916
查看次数

使用CDI + WS/RS + JPA构建应用程序

@Path(value = "/user")
@Stateless
public class UserService {

    @Inject
    private UserManager manager;

    @Path(value = "/create")
    @GET
    @Produces(value = MediaType.TEXT_PLAIN)
    public String doCreate(@QueryParam(value = "name") String name) {
        manager.createUser(name);

        return "OK";
    }
}
Run Code Online (Sandbox Code Playgroud)

这是用户管理器impl

public class UserManager {

    @PersistenceContext(unitName = "shop")
    private EntityManager em;

    public void createUser(String name) {
        User user = new User();
        user.setName(name);
        // skip some more initializations 
        em.persist(user);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是如果我没有将UserService标记为@Stateless,那么manager字段为null

但如果我标记@Stateless,我可以注入管理器字段,并且应用程序工作,因为我可以将数据保存到数据库中

只是想知道,这背后的原因是什么?

这是连接应用程序的首选方式吗?

好吧,我正在考虑将EntityManager拉出到生产者,以便它可以共享

jpa jax-rs java-ee cdi java-ee-6

5
推荐指数
1
解决办法
1800
查看次数

java中的电子商务(My Baptism of fire)

我正在为一些客户开发JEE6项目,他让我创建了一个非常简单的电子商务商店.我不太熟悉在线汇款,我想让客户能够将资金转账到我的银行账户(直接银行账户),然后再将他们购买的产品(Classic e-shop)邮寄给他们.我对付款网关或结账系统的工作方式了解不多.我想知道是否有人能给我一些关于我开始进入电子商务领域需要知道什么的提示?如果我能清除一些我心中的疑虑,我也会很高兴:

  • 我在JEE6编程,是否需要任何API才能进行银行转账?

  • 我是否需要第三方软件?如果是这样,您能推荐我使用其中一种软件吗?

  • 电子支付的第三方软件如何运作?

  • 在JEE6应用程序中集成第三方支付软件的过程是否复杂?

  • 我使用glassfish V3.0 app服务器.电子支付涉及的是否有任何限制.

我道歉,如果有些疑点听起来有些奇怪或与主题无关,但正如我所说,我对电子商务话题没有经验,我觉得有点迷茫.

我会感激一些帮助.

java payment-gateway java-ee e-commerce java-ee-6

5
推荐指数
1
解决办法
699
查看次数

WELD-001318无法解决模糊的依赖关系

部署我的应用程序时出现错误,如下所示.

Caused by: org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318 Cannot resolve an ambiguous dependency between [
Producer Method [String] with qualifiers [@Any @Config] declared as [[method] @Produces @Config public ca.comdev.cdip.mis.enterpriseportal.configuration.ConfigurationProvider.getConfigurationValue(InjectionPoint)], 

Producer Method [String] with qualifiers [@Any @Config] declared as [[method] @Produces @Config public ca.comdev.cdip.mis.enterpriseportal.configuration.ConfigurationProvider.getConfigurationValue(InjectionPoint)]]
Run Code Online (Sandbox Code Playgroud)

我只有这样的方法,其标题看起来像这样

@Produces @Config public String getConfigurationValue(InjectionPoint p) throws ConfigurationException{...}
Run Code Online (Sandbox Code Playgroud)

和班级有这些

@Named
@Singleton
@Startup
public class ConfigurationProvider {...}
Run Code Online (Sandbox Code Playgroud)

请帮忙.这个错误可能比我的代码更模糊.

java cdi java-ee-6 jboss-weld

5
推荐指数
1
解决办法
4674
查看次数

用于基于JSON的Web服务的Java框架

我正在编写基于JSON的Web服务.该服务将接受两种类型的请求:命令(例如createOrder)和查询(例如getOrders).每个请求都需要发送用户凭据(用户名/密码)进行身份验证(可能在HTTP头中).该服务需要用Java实现.

您会为此用例推荐哪些框架?我正在考虑的非常基本的堆栈是由像Jackson这样的JSON框架支持的servlet.它们是您推荐的其他框架吗?为什么?没有必要或希望使服务RESTful,但是与Java EE 6或Spring的顺利集成将是一个优势.

在此先感谢您的时间.

java spring json jackson java-ee-6

5
推荐指数
1
解决办法
6529
查看次数

GlassFish:如何设置Access-Control-Allow-Origin标头

我使用的是最新版本的GlassFish.我想在响应中设置Access-Control-Allow-Origin标头,以便可以从任何域调用我在GlassFish上托管的API.但我无法找到设置它的位置.

glassfish java-ee-6 glassfish-3

5
推荐指数
2
解决办法
2万
查看次数

Java EE 6组,用户和角色-vs- Shiro的角色,用户和权限

我试图在心理上将Java EE 6 ,用户角色的安全概念映射到Apache Shiro角色,用户权限的概念,我的理解是它们是不兼容的.

阅读Java EE 6安全教程,似乎模型限制性过于严格:基于每个服务器而不是每个应用程序配置,这实际上只留下了两个灵活的概念来表达授权机制:用户角色,存在于简单的1对N关系中.相比之下,Shiro的角色模型,用户权限更加动态,因为它使得人们能够在注释的代码中硬编码权限,并在事情发生变化或引入新角色时在运行时修改角色权限的映射.我不知道如何根据Java EE 6模型对容器管理的授权做同样的事情.

我的理解是否正确?因为这意味着使用容器管理的授权不能真正走得太远.

authorization shiro java-ee-6

5
推荐指数
1
解决办法
1851
查看次数

AJAX渲染属性不适用于rendered ="false"组件

我有一个组件,我想在用户点击后显示/隐藏commandButton.

就像这样:

<h:commandButton id="showButton" value="#{bean.wasPressed ? 'Hide' : 'Show'}">
    <f:ajax listener="#{bean.toggle()}" render="explanation showButton" />
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)

<h:panelGroup id="explanation" rendered="#{bean.wasPressed}">
    <h:outputText value="something" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

bean.toggle()简单地设置wasPressed属性为true或false适当.我在用<h:form prependId="false">.

问题是render我的按钮属性的值.它明确地征服了两者:explanationshowButton.

只要showButton始终存在(它只更改其标签),explanation仅当wasPressed属性为true 时才存在.否则它说:

malformedXML:更新期间:找不到解释

我怎么解决这个问题?

我不想恢复隐藏源代码中的元素,所以我不想使用任何jQuery切换( - )或任何使用style="display: none"或任何这些东西隐藏元素的方式.

它甚至可以在JSF 2.1中实现吗?

ajax facelets show-hide java-ee-6 jsf-2

5
推荐指数
1
解决办法
8479
查看次数

使用Java EE 6进行计划的数据库维护(连接生命周期)

我是Java EE 6的新手,所以如果这个问题的答案显而易见,我会道歉.我有一个必须每小时运行一次从数据库重建Solr索引的任务.我还希望在部署应用程序时进行重建.我的直觉是这应该有效:

@Singleton
@Startup
public class Rebuilder {
  @Inject private ProposalDao proposalDao;
  @Inject private SolrServer  solrServer;

  @Schedule(hour="*", minute="0", second="0")
  public void rebuildIndex() {
    // do the rebuild here
  }
}
Run Code Online (Sandbox Code Playgroud)

因为我正在使用myBatis,所以我写了这个制作人:

public class ProposalSessionProvider {
  private static final String CONFIGURATION_FILE = "...";

  static {
    try {
      sessFactory = new SqlSessionFactoryBuilder().build(
        Resources.getResourceAsReader(CONFIGURATION_FILE));
    }
    catch (IOException ex) {
      throw new RuntimeException("Error configuring MyBatis: " + ex.getMessage(), ex);
    }
  }

  @Produces
  public ProposalsDao openSession() {
    log.info("Connecting to the database");
    session = sessFactory.openSession(); …
Run Code Online (Sandbox Code Playgroud)

ejb mybatis java-ee-6

5
推荐指数
1
解决办法
285
查看次数