Java 如何在无状态会话Bean中访问SFSB

Java 如何在无状态会话Bean中访问SFSB,java,jakarta-ee,ejb,stateless,stateful,Java,Jakarta Ee,Ejb,Stateless,Stateful,我正在创建一个应用程序,其中JavaSwing客户端通过远程接口连接到EJB。现在,一旦客户端登录,无状态ejb是否可以直接从有状态会话bean获取特定于客户端的数据,而不涉及客户端 找不到有关上述问题的任何信息。AFAIK,如果使用JAAS(推荐),则不必使用状态完整会话bean来存储身份验证状态 对于远程客户端,通常首选无状态方法,即在客户端收集所有数据并发送到服务器 一些有用的JAAS链接: 书籍: 根据定义,无状态会话bean是无状态的。您不应该在依赖于会话状态的SLSB中编写

我正在创建一个应用程序,其中JavaSwing客户端通过远程接口连接到EJB。现在,一旦客户端登录,无状态ejb是否可以直接从有状态会话bean获取特定于客户端的数据,而不涉及客户端


找不到有关上述问题的任何信息。

AFAIK,如果使用JAAS(推荐),则不必使用状态完整会话bean来存储身份验证状态

对于远程客户端,通常首选无状态方法,即在客户端收集所有数据并发送到服务器

一些有用的JAAS链接:

书籍:


根据定义,无状态会话bean是无状态的。您不应该在依赖于会话状态的SLSB中编写业务逻辑,这表明您对此类组件的工作方式存在误解,可能表示存在设计问题


如果您确实、绝对需要访问会话信息来执行业务逻辑,那么可以从SFSB而不是SLSB进行访问。或者,您可以将会话状态作为参数传递给SLSB中的方法,但这种状态必须来自调用SLSB的有状态组件。

将有状态bean注入无状态bean会有帮助吗?是的,我想是这样,但我该如何做?我发现了,但我不明白。试着看一下这里的示例。但是,我如何将对有状态EJB的引用返回给客户端?然后如何从其他无状态EJB访问它?我认为业务逻辑应该在无状态和有状态会话bean中实现,而特定于客户端的细节应该在有状态会话bean中实现会话bean。我只是想让身份验证在服务器端进行。如果客户机只是访问有状态会话bean和受限方法,这将是一个问题。我想要的是每当调用无状态会话bean登录函数时,有状态bean应该被返回,所有无状态bean都应该能够检查有状态bean中的身份验证状态。实际上,我的意思是有状态bean引用将被返回并存储在客户端。你能帮我回答我的另一个问题吗?问题是我没有足够的时间学习JAAS。我试过了。。实现这些库需要花费太多的时间。安全性的问题是,总体安全性只与其最薄弱的环节一样强。自定义安全框架存在薄弱环节的风险要比使用由安全专家设计并经过可靠测试的框架的风险高得多。所以学习JAAS是很值得的,IMHO。对于EJB来说,它非常简单:只是一些注释。然后,您“只”需要配置如何存储凭据(文件、数据库、ldap等),并确定如何从swing客户端登录。好的。。但是除了JAAS之外,还有什么办法可以让身份验证在服务器端进行,并在服务器端验证权限吗?当然,有Spring安全性,但我不知道它在EJB中的工作情况如何。JAAS是JavaEE的标准安全框架。现在,我决定做的是,由于时间不够,我将在登录时临时创建一个授权密钥,并将其存储在数据库中。任何必须执行任何功能的用户都必须提供授权密钥。在学习JAAS之后,我将实现它。