标签: ejb-3.1

什么是EJB,它有什么作用?

一直试图了解EJB豆子是什么,这意味着他们的实例是在池中管理的,等等等等.真的无法抓住他们.

你能解释一下他们到底是什么(几乎是为了Java程序员)吗?他们在做什么?他们的目的是什么?为什么要真正使用它们 (为什么不坚持POJO?)也许是一个示例应用程序?

请参阅更新的信息EJB 3.1.有关EJB的日期信息可能会产生误导.

对于EJB学习初学者,请注意:

EJB基于分布式对象,这是指在由网络链接的多台机器(虚拟或物理)上运行的软件.

ejb java-ee ejb-3.1

146
推荐指数
4
解决办法
8万
查看次数

无状态和有状态企业Java Bean

我正在阅读Java EE 6教程,我试图理解无状态和有状态会话bean之间的区别.如果无状态会话bean在方法调用之间不保持其状态,为什么我的程序按照它的方式运行?

package mybeans;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;

@LocalBean
@Stateless
public class MyBean {

    private int number = 0;

    public int getNumber() {
        return number;
    }

    public void increment() {
        this.number++;
    }
}
Run Code Online (Sandbox Code Playgroud)

客户端

import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import mybeans.MyBean;
import java.io.PrintWriter;

@WebServlet(name = "ServletClient", urlPatterns = { "/ServletClient" })
public class ServletClient extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @EJB
    MyBean mybean;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws …
Run Code Online (Sandbox Code Playgroud)

java ejb java-ee stateful-session-bean ejb-3.1

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

EJB 3.1或Spring 3 ..何时选择哪一个?

EJB在3.x版本中实现了许多改进,Spring也是常用的,而版本3是一个很好的选择.

网上有很多文章,但没有关于ejb3x与spring3x的确切比较.你对它们有什么想法,在现实世界的例子中哪个更好的条件?

例如,我们想要分离数据库和服务器,这意味着我们的应用程序将在服务器上,我们的数据库将在另一个服务器上.. EJB远程控制与Cluster4Spring等?

做每一个@Annotation总是好的?配置永远不需要?

comparison ejb-3.0 ejb-3.1 spring-3

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

@Inject和@EJB之间有什么区别

我目前正在学习新的Java EE 6组件模型,并且与最新的依赖注入机制相混淆.所以这是我的问题:

1)@ Inject和@EJB之间有什么区别

2)如果我有一个包含另一个POJO的简单POJO(其中一个是DAO代码),那么更好的选择是什么:@Inject或@EJB?

我可以混用@Inject和@EJB吗?

一个例子是:

  • ClassA实现了InterfaceA,并具有ClassA_Adaptor的实例

  • ClassA_Adaptor实现InterfaceAB并具有ClassB的实例

  • ClassB实现了InterfaceB,并具有ClassB_Adaptor实例和实例DAO_ClassB

  • ClassB_Adaptor实现了InterfaceB并具有ClassC的实例

  • ClassC实现了InterfaceBC并具有WebService_ClassC的实例

  • DAO_ClassB将使用JPA 2.0(@PersistenceContext)

我想要注入所有这些,包括DAO和WebService.

3)仅对某些操作使用事务处理而不是对所有操作都使用事务是否是一种不好的方法?

例如:DAO_ClassB中的某些方法是典型的查询,而其他方法是"写入"方法.不用事务包装"READ"方法是不是很糟糕?

据我所知,DAO_ClassB可以使用@EJB包装事务(注入DAO_ClassB并使所有方法都是事务性的).我该如何控制它?

很抱歉,如果有些问题令人困惑,因为我只知道Java EE 6新组件模型的部分内容.

java-ee-6 jpa-2.0 ejb-3.1

37
推荐指数
3
解决办法
3万
查看次数

EJB @Schedule等到方法完成

我想编写一个后台作业(EJB 3.1),它每分钟执行一次.为此,我使用以下注释:

@Schedule(minute = "*/1", hour = "*")
Run Code Online (Sandbox Code Playgroud)

这工作正常.

但是,有时候这项工作可能需要一分多钟.在这种情况下,计时器仍然被触发,导致线程问题.

如果当前执行没有完成,是否可以终止调度程序?

java schedule java-ee job-scheduling ejb-3.1

36
推荐指数
3
解决办法
4万
查看次数

异步方法的默认EJB事务模式?

  1. 当我@Asynchronous在EJB中有一个方法,而我没有指定@TransactionAttribute,那么容器究竟是如何处理事务边界的呢?显然,它不能使用调用线程的事务,那么它有什么作用呢?

  2. 同样的问题,但关于TimerService触发的方法.


编辑:我想我措辞不好.我已经知道默认模式是'REQUIRED'.因此,假设在事务中始终调用这些方法应该是安全的.但我的问题是,该交易的生命周期是什么样的?容器是否为每个调用创建一个新事务?或者它是否为异步工作线程上的所有调用重用相同的事务?如果是后者,那么交易什么时候关闭?

java ejb glassfish java-ee ejb-3.1

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

@Stateless和@Singleton之间的区别

我正在按照本教程使用EJB:

package exercise1;

import java.util.Random;
import javax.ejb.Stateless;
import javax.inject.Named;

@Stateless
public class MessageServerBean {
    private int counter = 0;

    public String getMessage(){
        Random random = new Random();
        random.nextInt(9999999);
        int myRandomNumber = random.nextInt();
        return "" + myRandomNumber;
    }

    public int getCounter(){
        return counter++;
    }    
}
Run Code Online (Sandbox Code Playgroud)

这是一个输出示例:


来自Facelets的Hello
消息是:84804258
计数器是:26
消息服务器Bean是:exercise1.MessageServerBean@757b6193


这是我的观察:

  • 当我设置bean时,@Stateless我总是得到相同的对象ID,并且计数器总是递增.
  • 当我设置bean时,@Stateful每次刷新页面时都会获得一个新实例.
  • 当我设置它时,@Singleton我得到的结果与我设置时@Stateless相同:相同的对象ID,计数器递增.

所以,我真正想要理解的是:在这种情况下@Stateless,@SingletonEJB 和EJB 之间的区别是什么?

ejb ejb-3.1

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

在JavaEE 6 WAR vs EAR中打包EJB

启动一个新项目,并想了解在WAR与EAR中打包EJB的优缺点.

当EJB在WAR中时,JNDI仍然可以工作吗?效率?等等.?

谢谢.

java-ee java-ee-6 ejb-3.1

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

是否可以在应用程序代码之外配置EJB 3.1 @Schedule?

如何配置计划间隔:

@Schedule(persistent=true, minute="*", second="*/5", hour="*")

在应用程序代码之外?

  1. 如何在ejb-jar.xml中配置它?
  2. 我可以在应用程序之外配置它(属性文件的种类)吗?

java schedule java-ee-6 ejb-3.1

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

避免在glassfish上删除计时器

我有一个用@Schedule注释的方法,偶尔会被容器调用.

@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void myTimerMethod() throws Exception {
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题是在某些条件下,我希望此方法抛出异常以使正在进行的事务回滚.但如果我这样做超过两次,计时器将被清除,不再被调用!

INFO: EJB5119:Expunging timer ['68@@1359143163781@@server@@domain1' 'TimedObject = MyBean' 'Application = My-War' 'BEING_DELIVERED' 'PERIODIC' 'Container ID = 89072805830524936' 'Fri Jan 25 21:49:30 CET 2013' '0' '*/5 # * # * # * # * # * # * # null # null # null # true # myTimerMethod # 0' ] after [2] failed deliveries
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用在domain.xml中配置计时器重新安排

<domains>
    ...
    <configs>
        <config> …
Run Code Online (Sandbox Code Playgroud)

java glassfish java-ee-6 ejb-3.1

22
推荐指数
2
解决办法
7467
查看次数