小编ane*_*rgy的帖子

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  
  }

}
Run Code Online (Sandbox Code Playgroud)

由BeanA.methodA启动的事务将被挂起,并且将在BeanB.methodB中启动新事务.如果methodB需要访问由methodA修改的同一实体,该怎么办?这会导致死锁.是否可以在不依赖隔离级别的情况下阻止它?

java jpa java-ee-6 jpa-2.0

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

异步EJB 3.1方法和事务

我写了一个小测试来了解EJB3.1中使用@Asynchronous注释的异步行为.看起来:

如果该方法与调用者存在于同一个bean中,

  1. 呼叫不再是异步的.
  2. 如果异步方法中的事务被回滚,则调用者事务被标记为回滚; 它可能是1的副作用.

但是,如果异步方法存在于另一个bean中,则行为是预期的,即调用是异步的并且调用者事务是独立的(异步方法具有事务的REQUIRES_NEW行为).这对我来说很困惑,因为在这两种情况下行为都不一样.请有人澄清一下吗?

PS环境EJB 3.1,JBoss 6

java java-ee ejb-3.1

6
推荐指数
1
解决办法
3015
查看次数

未来<V>和例外

如何确保来自EJB 3.1方法的@Asynchronous方法抛出的异常不会被Future默默地吃掉?
我知道可以使用Future.get方法来检索异常,但它会等到计算完成,如果没有异常发生就会出现问题,你必须等到计算结束.

(更新)

场景非常简单.无状态EJB使用@Asynchronous注释公开其方法,主要用于@Local.AS是JBoss.在计算过程中,可能会发生RuntimeException.如果作业完成,客户可能会或可能不想轮询,但在所有情况下,他们都应该知道是否发生了异常.一种解决方法可以使用某种回调,但我很感兴趣,如果有任何开箱即用的解决方案可用.

java java-ee ejb-3.1

6
推荐指数
1
解决办法
1381
查看次数

如何列出"java:global"命名空间中的所有JNDI条目

目标是以编程方式列出所有JNDI条目.new InitialContext().list("java:global")不起作用.

EJB 3.1,Wildfly或Glassfish 4

jndi java-ee glassfish-4 java-ee-7 wildfly

6
推荐指数
1
解决办法
2972
查看次数

消息驱动Bean - 何时使用

JavaEE的6教程说,你不能用Session Bean的异步方式,那么什么是@Asynchronous注解的EJB 3.1的目的,这篇文章说,你可以使用它.有人可以解释何时使用Message Driven Bean?

谢谢!

java java-ee ejb-3.0

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

JAXB命名空间顺序

是否可以控制通过JAXB生成的文档中命名空间的顺序?我知道,它与XML标准无关,但我们需要以特定的顺序生成名称空间声明?例如,目前我们已经生成了

<rootelement a="http://www.example.com/xom" b="http://www.example.com/crops">
..
</rootelement>
Run Code Online (Sandbox Code Playgroud)

但是我需要:

<rootelement b="http://www.example.com/crops" a="http://www.example.com/xom">
..
</rootelement>
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

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

Enum中的成员字段顺序

为什么声明的顺序对Java枚举很重要,我的意思是为什么这会给出(编译时)错误

public enum ErrorCodes {
    public int id;
    Undefined;
}
Run Code Online (Sandbox Code Playgroud)

但是这个很好:

public enum ErrorCodes {
    Undefined;
    public int id;

}.
Run Code Online (Sandbox Code Playgroud)

java enums

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

PowerMock Mockito:如何模拟所有静态方法?

在使用PowerMock(使用Mockito)时,我们是否需要模拟类的所有静态方法?我的意思是,假设我们有:

class MockMe {
   public static MockMe getInstance(){
              //return new Instance via complex process;
   }

   public static List<X> anotherStaticMethod(){
      // does xyz
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题,如果我需要模拟getInstance方法,是否有必要模拟"anotherStaticMethod"?

PowerMock版本:1.3,Mockito版本:1.8

java mocking mockito powermock

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

薪资计算模式

我想开发一个类似于薪水计算的系统.薪水有基本价值.最重要的是,员工可以获得一些奖金或惩罚.装饰模式似乎适合这种情况

Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
Run Code Online (Sandbox Code Playgroud)

另外,我想保存每个计算的结果.所以最后,即使经过计算,我也可以检索LateComingPenalty的数量.

这似乎是一个常见的问题,涉及这种发票计算.可能有一些比装饰模式更好的选择.你有更好的建议吗?

java design-patterns

2
推荐指数
1
解决办法
873
查看次数

使用@Resource注释的SessionContext注入

我需要回滚EJB 3无状态SessionBean(CMT,JBoss版本5),我正在使用它

sessionContext.setRollbackOnly();
Run Code Online (Sandbox Code Playgroud)

使用@Resource注释注入此sessionContext.我的问题:1)是否首选在EJB3中回滚?

2)如果我使用公共setter注入,为什么Jboss会在部署时抱怨

// throws exception on deployment.
    private SessionContext sessionContext;
    @Resource
    public void setSessionContext(SessionContext sessionContext) {
     this.sessionContext = sessionContext;
    }
Run Code Online (Sandbox Code Playgroud)

但以下工作正常:

@Resource
private SessionContext sessionContext;
Run Code Online (Sandbox Code Playgroud)

以下是第一种情况的例外情况:

javax.ejb.SessionContext is an interface, and JAXB can't handle interfaces.
        this problem is related to the following location:
                at javax.ejb.SessionContext
                at public javax.ejb.SessionContext invoice.sap.service.jaxws.SetSctx.arg0
                at invoice.sap.service.jaxws.SetSctx
javax.ejb.SessionContext does not have a no-arg default constructor.
        this problem is related to the following location:
                at javax.ejb.SessionContext
Run Code Online (Sandbox Code Playgroud)

java java-ee ejb-3.0 java-ee-6

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

在一个项目中使用多个Jars平面项目

新手Gradle query.Consider跟随项目的结构

Project
   |
    -component_1

   |
    -component_2
Run Code Online (Sandbox Code Playgroud)

我想从每个组件源生成一个jar,它位于src目录下.请注意,这不是一个多项目场景,而是一种多组件.我怎么能在Gradle(1.6)中做到这一点

更新:

需要单个构建文件,而不是每个组件具有单独的构建

java gradle

2
推荐指数
1
解决办法
1534
查看次数