问题标签 [sessioncontext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
session - SessionContext.getCallerPrincipal.getName() 返回“匿名”
在我的 Java EE 应用程序中,我声明了以下 RESTful 类
旨在通过任何客户端获取当前登录用户的用户名。
使用用户名“myuser”登录后,我只是将以下 url 粘贴到新选项卡中的网络浏览器中
并且显示的响应符合预期:“myuser”。
现在我尝试从另一个执行 Ajax 请求的 ExtJS 应用程序(不需要身份验证)中获取该用户名,如下所示:
警报结果是“匿名”,即使在同一会话期间我仍然以“myuser”身份登录。
那么,为什么调用者主体在第二种情况下会发生变化,是否有解决方案?
nhibernate - WCF 和单元测试的不同 SessionContexts
我在 IIS 上运行我的应用程序以测试我的服务是否按预期工作。此外,我对其他内部类的操作进行单元测试。
以下是我的会话工厂配置:
您可以注意到注释行,带有//.CurrentSessionContext("call")。当我在 IIS 上运行我的服务时,我必须使用它上面的行.CurrentSessionContext< WcfOperationSessionContext >(),当我运行单元测试时,.CurrentSessionContext("call")。
有没有办法知道哪个案例正在运行并自动设置其中一个选项?
java - 会话上下文为空 JBOSS 7.1
更新问题:
我使用了 JBOSS Develper Studio 8,基于 jre 1.7 的 JBOS server 7.1 我有一个带有 ejb 和 web 项目的 J2EE 项目。在 ejb 项目中我有两个相同的 ejb 3.1 在 web 项目中我只有一个 servlet。此 servlet 在第一个 ejb 中调用简单的测试方法,然后在第二个 ejb 中调用。测试方法中的第一件事是通过此代码对资源会话上下文进行依赖注入
第一个 ejb 工作正常,但第二个(以及任何后续)为会话上下文返回 null。这是完整的代码:
FirstServlet.java
第一个EJB.java
第二个EJB.java
谁能知道问题出在哪里。
java - SessionContext 在从 Servlet 调用的 Session-Bean 中始终为空
我的工作是使用 Servlet 编写一种 Web 服务适配器,然后调用适配器 EJB(SOAP Web 服务),后者又调用现有的服务方法(也是 EJB)。现有架构基于 EJB 2.0,我暂时无法更改。外部客户应该直接访问 Servlet 而不是 webservice 类。原因是需要使用 HTTPRequest 中的信息进行一些预处理(从证书或 HTTP Header 中获取和映射用户 ID)。因此,Servlet 对 doPost() 方法做出反应,执行预处理,如解析和编组 SOAP XML 数据,然后调用适配器 EJB(无状态会话 Bean),更准确地说是 web 服务方法,然后将触发不同的现有服务方法EJB。到目前为止,在 EJB 需要现有的 Session 之前,这种方法运行良好。SessionContext,就像在以下处理事务回滚的情况下一样:
在我的设置中,SessionContext 始终为空。由于整个应用程序已经相当复杂,我尝试发布一个仅使用 Servlet 和一个 EJB 的简化设置,希望我不会排除相关的内容。系统:WebSphere 应用服务器 8.5
小服务程序:
EJB(由 Rational Application Developer 9.0 生成):
我们正在使用 SoapUI 工具 ( http://www.soapui.org ) 测试设置。同样,对于简单的 Ping() 服务,我们得到了正确的结果,但是一旦需要与会话相关的内容,它就会失败。
当然我做了一些研究,特别有趣的是这个链接: How to get SessionContext in JBOSS 这也指的是:http: //javahowto.blogspot.co.uk/2006/06/4-ways-to-get-ejbcontext-在-ejb-3.html
关于 EJB 生命周期:docs.oracle.com/cd/E13224_01/wlw/docs100/guide/ejb/session/conSessionBeanLifeCycle.html J2EE-Tutorial:docs.oracle.com/javaee/6/tutorial/doc/gipss.html# gipsx(抱歉,不能发布超过 2 个链接...)
但正如代码中所述,我无法访问 java:comp/env/ejb/sessionContext。嗯...甚至没有 java:comp/env/ejb。我编写了一个脏帮助器方法来查看 EJB 实际可访问的内容并获得以下输出:
我也尝试使用注释:
或以不同的方式设置交易类型:
没有任何帮助。我知道应该自动创建 SessionContext 。但如果不是 - 必须创建一个新选项的哪个选项?进一步的问题:servlet 还“创建”了一个我可以访问的会话(request.getSession()),但这是不同的(HTTPSession)。我想我不能共享或“转换”这个会话对象到会话 Bean?
ejb - 嵌入 Arquillian Glassfish - NameNotFoundException
我正在尝试使用 arquillian 为我的应用程序创建集成测试,但我目前在使用 @Resource SessionContext 时遇到问题。
这是我的配置:
我的 pom.xml arquillian 依赖项:
arquillian.xml
glassfish-resources.xml
测试持久性.xml
InboundFileImportTest.java
InboundReprocessBOImpl.java
这是我得到的错误:
有人可以帮忙吗??
谢谢
java - sessionContext.getCallerPrincipal().getName() 总是返回“匿名”
我正在开发一个包含 EJB 组件并部署在 JBoss EAP 7.0.7 中的 Web 项目。一些 EJB 是从独立的客户端应用程序调用的。
问题是虽然身份验证似乎工作正常,但主体没有传播到 EJB 层,所以当我调用 sessionContext.getCallerPrincipal().getName() 时,它只返回“匿名”。
看来我的配置工作正常。我在我的standalone.xml 和 jboss-web.xml 中设置了一个安全域,然后我注释了我的 EJB 以使用配置的安全域。
当我从 Web 应用程序中调用 EJB 时,它工作得非常好。主体被传播并设置为登录用户(我使用了 HttpServletRequest.login api)。
那么我如何将主体传播到 EJB 层,就像使用 HttpServletRequest.login 传播它一样?是否有任何类似于我提到的可以在独立应用程序中实现的 api?我一直在寻找一段时间,但到目前为止对我没有任何帮助。希望可以有人帮帮我。谢谢!
java - 为什么 Subject.doAs 会根据登录用户而不是切换的主题返回主体?
我正在尝试从以前部署在 bea weblogic 中的 web 应用程序转换现有的 api。我现在需要在 JBoss EAP 7 中部署这个应用程序。
在我的用户登录代码中,我正在执行 servlet 身份验证,如下所示:
现在容器查找到的每个 EJB 中的 sessionContext 都会返回登录的用户,这很完美,只是一些应用程序功能需要切换用户并执行一些特权操作,例如上传文档。
我正在切换用户并执行特权操作,如下所示:
在实现 PrivilegedAction 的 TestPrivilegedAction 中,我有以下代码:
基本上,在 weblogic 中部署应用程序时使用的原始 api 是:
...然后我将其替换为以下内容以使其在 JBoss 中工作:
那么为什么现在它仍然返回登录用户(user1),即使身份验证成功并且主题已经设置为 user2?我一直在网上搜索并试图看看我是否只是缺少一些配置,但我现在真的坚持下去了。我感谢任何反馈或建议。
java - Java EE 无法完成 SessionContext
要在出现错误时回滚,我使用javax.ejb.SessionContext来做到这一点,
首先我标记一个要回滚的点sessionContext.getUserTransaction().begin()
然后我使用sessionContext.getUserTransaction().rollback()
回滚并sessionContext.getUserTransaction().commit();
使用should complete transaction before returning.
但问题是如果没有任何改变,这将抛出org.hibernate.exception.GenericJDBCException: could not prepare statement
. 结论:无论如何要停止 SessionContext ?
maven - 默认情况下如何设置共享会话上下文为真
我有一个Maven EAR,其中包含一些需要共享会话上下文的模块。因此,当我在Liberty Server(在 Eclipse 上)上运行它时,我必须在“服务器配置”中添加应用程序扩展并将shared-session-context
标志设置为 true。
我想我怎么能默认设置它,也许在 pom.xml 中?我可以找到有关它的任何信息。
谢谢。
c# - 无法在 .NET C# 中设置/获取 SQL session_context
几个月前我有这个工作,但我无法读回代码中设置的会话变量,但我可以在查询分析器中..这个 C# 代码设置变量
但是当我立即读回来时
它返回 null 但我可以在管理工作室中设置和读取它没问题
任何想法为什么?