我是Java EE的新手,我正在尝试理解本地接口和远程接口的概念.我被告知Java EE的一大优势是它易于扩展(我相信这意味着您可以在不同的服务器上部署不同的组件).是远程和本地接口进来的地方吗?如果您希望应用程序在不同的服务器上具有不同的组件,您是否应该使用远程接口?如果您的应用程序只驻留在一台服务器上,请使用本地接口?
如果我的上述假设是正确的,那么您将如何选择是否为新应用程序使用本地或远程接口,而您不确定流量的大小是多少?从使用本地接口开始,逐步升级到适用的远程接口?
感谢您的任何澄清和建议.
我已经做了几年的Java SE并继续使用Java EE.但是我在理解Java EE的某些方面时遇到了一些麻烦.
Java EE只是一个规范吗?我的意思是:EJB Java EE?
EJB/Spring是不同的Java EE实现?
很抱歉,但是我很难理解Java EE是什么.有人能解释一下Java EE是什么吗?和EJB?
一直试图了解EJB豆子是什么,这意味着他们的实例是在池中管理的,等等等等.真的无法抓住他们.
你能解释一下他们到底是什么(几乎是为了Java程序员)吗?他们在做什么?他们的目的是什么?为什么要真正使用它们 (为什么不坚持POJO?)也许是一个示例应用程序?
请参阅更新的信息EJB 3.1.有关EJB的日期信息可能会产生误导.
对于EJB学习初学者,请注意:
EJB基于分布式对象,这是指在由网络链接的多台机器(虚拟或物理)上运行的软件.
我发现了这个问题:@ Inject和@EJB之间的区别是什么,但我没有更明智.我以前没有完成Java EE,也没有依赖注入的经验,所以我不明白我应该使用什么?
@EJB和旧的注射方式?在使用@Inject时使用此批注时EJB容器是否完成注入使用新的CDI框架?这是不同的,如果是这种情况,我应该使用@Inject而不是@EJB吗?
我最近听到人们说数据传输对象(DTO)是一种反模式.
为什么?有哪些替代方案?
我很难理解两者如何相互作用以及它们之间的界限在哪里.它们是否重叠?他们之间有冗余吗?
我知道有两个注释都有关联,但我无法通过简短的描述找到两者的完整列表.不确定这是否有助于弄清楚它们之间的区别或重叠的位置.
真的只是困惑.我(我认为)合理地理解EJB,我想我很难理解CDI带来的确切内容以及它如何取代或增强EJB已经提供的内容.
我有以下代码:
List<Product> product = new List<Product>();
Run Code Online (Sandbox Code Playgroud)
错误:
Cannot instantiate the type List<Product>
Run Code Online (Sandbox Code Playgroud)
Product是我的EJB项目中的实体.为什么我收到此错误?
我正在阅读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) 有状态会话bean定义如下:
有状态会话Bean对象的状态由其实例变量的值组成.在有状态会话bean中,实例变量表示唯一的客户端bean会话的状态.因为客户端与其bean交互("会话"),所以这种状态通常称为会话状态.
无状态会话bean定义如下:
无状态会话Bean无状态会话Bean不与客户端保持会话状态.当客户端调用无状态bean的方法时,bean的实例变量可能包含特定于该客户端的状态,但仅限于调用期间.方法完成后,不应保留特定于客户端的状态.但是,客户端可以更改池化无状态bean中的实例变量的状态,并且此状态将保留到池化无状态bean的下一次调用.除了在方法调用期间,无状态bean的所有实例都是等效的,允许EJB容器将实例分配给任何客户端.也就是说,无状态会话bean的状态应该适用于所有客户端.
使用无状态会话bean而不是有状态会话bean的优点如下:
由于无状态会话bean可以支持多个客户端,因此它们可以为需要大量客户端的应用程序提供更好的可伸缩性.通常,应用程序比有状态会话bean需要更少的无状态会话Bean,以支持相同数量的客户端.
所以我想到的问题是,何时应该使用有状态会话bean?为了我对这个问题的天真理解,我应该坚持使用无状态会话bean.
应该使用有状态会话bean的候选者是什么?有什么好例子吗?
java spring ejb stateless-session-bean stateful-session-bean