问题标签 [container-managed]

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.

0 投票
1 回答
1073 浏览

java - 容器管理事务不能回滚

我在玩交易。

我将 JPA 配置为处理我的实体,并希望将它们保存在数据库中。问题是,当我的程序抛出 runtimeException 时,CMT 不会回滚。

这个“容器的东西”背后的想法很难理解,而且文档记录也很差。

@transactional 托管事务、纯 CDI 拦截器托管事务和 Bean 托管事务的工作就像一个魅力。

这是我编码的内容:这是一个简单的“电影演示”。你想看两部 X 座位的电影。座位有限。如果电影中没有足够的席位,则不应该有交易(ACID 之类的)


在我的 buyTicketsBoundary 课程中:

起初我告诉我的班级我们正在使用 CMT:


我的例外:


通过 JPA 在数据库中写入已购买票证的控制器类:

问题是,当此类达到第一部电影的 em.persist 状态,而第二部电影抛出异常时,数据库无法回滚。

我想如果抛出 RuntimeException,容器会回滚

我该怎么做才能让它发挥作用?

如果有不清楚的地方请告诉我

0 投票
2 回答
1120 浏览

java - Glassfish 容器管理的数据库位置

我有一个可以使用 CRUD 操作访问的 glassfish 容器管理的 derby 数据库。我想通过 asadmin 工具直接访问我的 derby 数据库以查看表。

但是,我找不到我的数据库。

在研究了这个站点后,我发现 glassfish 创建了仅在需要时才连接的连接池。我看到我可以创建一个连接池,但我什至不知道数据库在哪里。

任何意见是极大的赞赏。我是 JEE7 的新手,正在学习“JEE7 初学者”一书。

0 投票
0 回答
407 浏览

java - 容器管理事务的问题(openJPA + Spring + WAS 8.5)

我在不使用 @PersistenceContext 的情况下将 EntityManager 注入 DAO 时遇到问题。

我正在开发一个具有两个 EntityManagerFactories 的应用程序,一个使用jndi数据源,另一个使用jdbc数据源。我必须在不使用@PersistenceContext 的情况下将EntityManager 注入DAO,因为我想对两个数据源使用相同的DAO。两个持久性单元都在同一个persistence.xml

我遵循的方法是:

persistenceContext-jdbc.xml

persistenceContext-jndi.xml

虽然我能够为 jdbc 流注入 EntityManager。对于 jndi 流,我也面临同样的问题。

应用程序使用 spring 集成 (@ServiceActivator) 从 MQ 轮询消息。

以下是我得到的例外:

0 投票
1 回答
1402 浏览

jdbc - Java EE 中的事务混合(在 bean 管理方法中调用容器管理的 bean 方法)

除了互联网上的无用教程和规范之外,找不到任何相关信息。

我现在正在努力解决一件事,如果你能帮忙的话。

事情就是这样。

假设我们有两个 EJB 版本 3.0,带有关于它们的事务类型的注释,一个是 bean 管理的(让它成为 BeanManaged),第二个是容器管理的(让它成为 ContainerManaged,多么有创意)。

然后会发生这种情况:

在这一切的机制中发生了什么,bean 管理事务是否变成某种“孤立”的容器管理事务?他们混合吗?如果有的话,它们是如何交互的?一项交易是否与另一项交易分开

这是我的推论,但还有更多。

最后,当我尝试提交 bean 事务时,它说“您好,先生,此事务是托管的,并且禁止手动提交”,SQLException 为沙漠。

然后是批次的东西,我以某种方式收集。添加了 100 个批次后,我想执行它们,但实际上只执行了最后一个,似乎 addBatch 根本不起作用。

任何人都可以联系,或者遇到类似的事情是受欢迎的,每个巫师都会得到免费的饼干。

0 投票
2 回答
1109 浏览

jakarta-ee - 容器管理的身份验证,处理当前登录的用户

我已经在帖子中挖掘了太久并且头晕目眩,所以我希望这里的一位大师可以帮助我解决这个问题。

我正在使用容器管理的身份验证,它运行良好。我有我的 Realm 设置来进行身份验证,在 web.xml 中设置受保护的 url,有一个登录页面等。

但现在我遇到了一个问题......

我的数据模型有 JPA 对象,其中一些对象经过“审核”,因为它们跟踪它们的创建或更新时间以及由谁创建或更新。

@PrePersist在我的代码中使用一个处理程序来分别设置持久/更新的createdOn和字段,如下所示:updatedOn

这很好用,但我错过了如何从这里访问当前登录的用户......我需要它才能设置该createdBy字段。

我正在使用Resteasy并且在我的端点中我确实可以访问登录的用户名并且能够获取我的 Account 对象:

AuthorizationService 是我的,看起来像这样:

这行得通。请注意,我将登录用户缓存在请求属性上,因此我不会每次都将查询发送到数据库。

到目前为止,我已经能够通过这个设置,但我觉得我做这一切都错了......

我想有一个全局拦截点(过滤器?),我用当前登录的用户的 Account 对象填充......某物......(请求?)然后能够在需要的地方注入它......我我会非常喜欢不创建会话的解决方案,因为我正在尝试使应用程序尽可能可扩展。

有关如何处理此问题的任何提示?可能很好地解释了这一点的教程的黄金链接?感谢您的帮助!

0 投票
2 回答
1565 浏览

jpa - (OpenJPA/WAS) 如何为容器托管实体管理器使用容器托管身份验证

客观的

了解如何配置 WAS 或 OpenJPA 以将容器托管身份验证与容器托管实体管理器一起使用。

问题

试图通过在 JNDI 中注册为“jdbc/DB2”(它指的是 Oracle)的 JDBC 数据源访问 Oracle 数据库,该数据源在 persistence.xml 中定义。

持久性.xml

但是,当访问持久性单元的容器管理实体管理器时,会抛出 ORA-01017 无效的 usrname/password。如果在 persistence.xml 中指定了 ConnectionUserName/ConnectionPassword,则错误得到解决。

错误

曾是

  • JAAS 与数据源相关联以使用 Continaer 托管身份验证
  • 从 WAS 控制台 JDBC 数据源,测试到数据源的连接成功。
  • 命名空间转储验证“jdbc/DB2”已注册在 server1 命名空间中。
  • WAS 不是 ND 并且服务器已重新启动多次。

在此处输入图像描述

使用 Entity Manager
的 Servlet 原文来自 IBM developerWorks 文章。在 servlet 实例变量中注入实体管理器不是多线程安全的,而是为了测试。

问题

请帮助理解为什么不使用 JAAS 以及如何配置 WAS 或 JPA 来使用它。

环境

IBM WAS 8.5.5.7 for Developers (Apache openjpa-2.2.3-SNAPSHOT-r422266)
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64 位生产
Windows 7 64 位 DELL Latitude core i7 2.8GHz 8G 内存和 SSD HDD

日志

应用程序启动时的 Oracle 错误

执行 CreateAccount 时的 Oracle 错误

JNDI 命名空间 (server1)

构建时增强的 OpenJPA 日志

参考


更新

尝试了IBM redbook WebSphere Application Server for Developers V7的 JPA 示例。部署应用程序版本 2 并得到相同的错误。

0 投票
0 回答
617 浏览

spring - 针对 tomcat-users.xml 的 Spring 身份验证

我被要求必须将应用程序配置为使用 LDAP 或容器管理的身份验证。LDAP 要求已经得到满足,但是容器管理的,在这种情况下容器是 Tomcat,仍然是一个令人头疼的问题。如何使用现有的 Spring Authentication 框架针对 tomcat-users.xml 验证用户详细信息?

非常感谢

安格斯

0 投票
0 回答
504 浏览

jsf - 使用容器管理的身份验证/授权的 Hash+Salt 密码

我使用容器管理的身份验证和授权创建了一个 JSF Web 应用程序。我定义了安全约束、安全角色和 FORM 登录配置;我提供了下面的代码来说明我如何定义所有这些参数。一切正常;当用户尝试访问“受保护”网页时,系统会提示他们登录,如果成功则授予访问权限,如果失败则拒绝访问。由于密码以明文形式存储,因此当用户输入明文密码时,使用容器管理的身份验证功能登录也可以正常工作。

As you know, I cannot access/change/work-on the plain text passwords entered by the user using the FORM authentication method. But i want to hash+salt my passwords before saving, bu then the log in will not work since the users will enter plain text and the database will have a hashed+salted password. Is there a way to keep the container-managed authentication and authorization functionality and still hash+salt passwords, if not how can I? Since FORM authentication does not let me work with the password entered by the user, I can't hash+salt it before the comparison is made with the password saved in the database. If there's a book or blog I can read please direct me. I have looked intensively throughout the web and have not found an answer I understood.

The login config is as follows:

The log in page is as follows:

0 投票
1 回答
33 浏览

java - 使用 JDBC Realm 时欢迎页面如何工作?

在设置 JDBC Realm 时,我们指定首先加载用于身份验证的表单登录页面。如果先出现,web.xml 中指定的欢迎文件如何加载?登录成功时,JDBC Realm 会重定向到欢迎文件吗?

0 投票
0 回答
33 浏览

hibernate - 如何更改标记为回滚的容器管理事务的状态

在使用容器管理事务和休眠的 ejb 单一 bean 中,按照上面的代码。由于 Duplicate key Exception 运行 em.persist(entity) 后,事务被标记为回滚。但我想保持交易活跃,我怎样才能避免它或将交易状态更改为活跃。