考虑这种情况,在不同的无状态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修改的同一实体,该怎么办?这会导致死锁.是否可以在不依赖隔离级别的情况下阻止它?
我写了一个小测试来了解EJB3.1中使用@Asynchronous注释的异步行为.看起来:
如果该方法与调用者存在于同一个bean中,
但是,如果异步方法存在于另一个bean中,则行为是预期的,即调用是异步的并且调用者事务是独立的(异步方法具有事务的REQUIRES_NEW行为).这对我来说很困惑,因为在这两种情况下行为都不一样.请有人澄清一下吗?
PS环境EJB 3.1,JBoss 6
如何确保来自EJB 3.1方法的@Asynchronous方法抛出的异常不会被Future默默地吃掉?
我知道可以使用Future.get方法来检索异常,但它会等到计算完成,如果没有异常发生就会出现问题,你必须等到计算结束.
(更新)
场景非常简单.无状态EJB使用@Asynchronous注释公开其方法,主要用于@Local.AS是JBoss.在计算过程中,可能会发生RuntimeException.如果作业完成,客户可能会或可能不想轮询,但在所有情况下,他们都应该知道是否发生了异常.一种解决方法可以使用某种回调,但我很感兴趣,如果有任何开箱即用的解决方案可用.
目标是以编程方式列出所有JNDI条目.new InitialContext().list("java:global")不起作用.
EJB 3.1,Wildfly或Glassfish 4
在JavaEE的6教程说,你不能用Session Bean的异步方式,那么什么是@Asynchronous注解的EJB 3.1的目的,这篇文章说,你可以使用它.有人可以解释何时使用Message Driven Bean?
谢谢!
是否可以控制通过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枚举很重要,我的意思是为什么这会给出(编译时)错误
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) 在使用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
我想开发一个类似于薪水计算的系统.薪水有基本价值.最重要的是,员工可以获得一些奖金或惩罚.装饰模式似乎适合这种情况
Salary finalSalary = new HardworkBonus(new LateComingPenalty(new BasicSalary()))
System.out.println("Your total salary is : "+ finalSalary.calculate())
Run Code Online (Sandbox Code Playgroud)
另外,我想保存每个计算的结果.所以最后,即使经过计算,我也可以检索LateComingPenalty的数量.
这似乎是一个常见的问题,涉及这种发票计算.可能有一些比装饰模式更好的选择.你有更好的建议吗?
我需要回滚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) 新手Gradle query.Consider跟随项目的结构
Project
|
-component_1
|
-component_2
Run Code Online (Sandbox Code Playgroud)
我想从每个组件源生成一个jar,它位于src目录下.请注意,这不是一个多项目场景,而是一种多组件.我怎么能在Gradle(1.6)中做到这一点
更新:
需要单个构建文件,而不是每个组件具有单独的构建