这是我的第一个问题,我希望我做得对.
我需要处理一个Java EE项目,因此,在开始之前,我正在尝试做一些简单的事情,看看我能做到这一点.
我被Stateful Session Beans困住了.
这是一个问题:如何使用SFSB跟踪用户的会话?我看到的所有情况,"把"的最终SFSB到HttpSession的属性.但我不明白为什么!我的意思是,如果bean是STATEFUL,为什么我必须使用HttpSession来保存它?
EJB容器的任务不是将正确的SFSB返回给客户端吗?
我试过一个简单的计数器豆.在不使用会话的情况下,两个不同的浏览器具有相同的计数器bean(单击"增量"会更改它们的值).使用会话,我有两个不同的值,每个值对应每个浏览器(点击Firefox上的"增量",只添加一个到Firefox的bean).
但我的老师告诉SFSB保持"与客户的会话状态",那么为什么它不能在不使用HttpSession的情况下工作呢?
如果我理解正确的,不使用HttpSession中有SFSB同样用做它的SLSB呢?
我希望我的问题很明确,而且我的英语不是那么差!
编辑:我正在使用登录系统.一切顺利,完成登录后,我会看到一个显示用户数据的个人资料页面.但重新加载页面会使我的数据消失!我尝试在记录时添加HttpSession,但这样做会使数据在注销后保持不变!
是否需要Java EE应用程序使用诸如SUN Java Web Server之类的Web服务器来处理servlet/jsp请求并转发到IBM WebSphere或BEA WebLogic等应用程序服务器?
由于Application Server能够处理这样的servlet/jsp吗?
这种服务器架构有哪些优点/缺点?
我的问题非常简单,我的目的是生成一个包含您的响应的存储库,以便在选择用于开发企业通用应用程序的框架时可以为社区服务.这非常适用于C++,C#或Java等通用语言.
在J2EE 6中,您可以将EJB会话bean公开为REST Web服务,如下所示
@Stateless
@Path("/test")
public class TestSessionBean {
@GET
@Produces("application/xml")
public String getTest() {
return "<?xml version='1.0' encoding='UTF-8'?><val>test session bean</val>";
}
}
Run Code Online (Sandbox Code Playgroud)
当我在.war中打包EJB时,这是有效的,但是,当我尝试将项目打包到EAR中的单独的web和ejb模块时,我得到一个HTML 404 not found错误.
有人可以解释一下吗?
我正在使用Glassfish v3
这是我的web.xml
<servlet>
<servlet-name>TaskRestService</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>TaskRestService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud) ejb ×2
architecture ×1
frameworks ×1
httpsession ×1
java ×1
java-ee ×1
javabeans ×1
rest ×1
session ×1
stateful ×1