问题标签 [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.
java - 容器管理事务不能回滚
我在玩交易。
我将 JPA 配置为处理我的实体,并希望将它们保存在数据库中。问题是,当我的程序抛出 runtimeException 时,CMT 不会回滚。
这个“容器的东西”背后的想法很难理解,而且文档记录也很差。
@transactional 托管事务、纯 CDI 拦截器托管事务和 Bean 托管事务的工作就像一个魅力。
这是我编码的内容:这是一个简单的“电影演示”。你想看两部 X 座位的电影。座位有限。如果电影中没有足够的席位,则不应该有交易(ACID 之类的)
在我的 buyTicketsBoundary 课程中:
起初我告诉我的班级我们正在使用 CMT:
我的例外:
通过 JPA 在数据库中写入已购买票证的控制器类:
问题是,当此类达到第一部电影的 em.persist 状态,而第二部电影抛出异常时,数据库无法回滚。
我想如果抛出 RuntimeException,容器会回滚
我该怎么做才能让它发挥作用?
如果有不清楚的地方请告诉我
java - Glassfish 容器管理的数据库位置
我有一个可以使用 CRUD 操作访问的 glassfish 容器管理的 derby 数据库。我想通过 asadmin 工具直接访问我的 derby 数据库以查看表。
但是,我找不到我的数据库。
在研究了这个站点后,我发现 glassfish 创建了仅在需要时才连接的连接池。我看到我可以创建一个连接池,但我什至不知道数据库在哪里。
任何意见是极大的赞赏。我是 JEE7 的新手,正在学习“JEE7 初学者”一书。
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 轮询消息。
以下是我得到的例外:
jdbc - Java EE 中的事务混合(在 bean 管理方法中调用容器管理的 bean 方法)
除了互联网上的无用教程和规范之外,找不到任何相关信息。
我现在正在努力解决一件事,如果你能帮忙的话。
事情就是这样。
假设我们有两个 EJB 版本 3.0,带有关于它们的事务类型的注释,一个是 bean 管理的(让它成为 BeanManaged),第二个是容器管理的(让它成为 ContainerManaged,多么有创意)。
然后会发生这种情况:
在这一切的机制中发生了什么,bean 管理事务是否变成某种“孤立”的容器管理事务?他们混合吗?如果有的话,它们是如何交互的?一项交易是否与另一项交易分开
这是我的推论,但还有更多。
最后,当我尝试提交 bean 事务时,它说“您好,先生,此事务是托管的,并且禁止手动提交”,SQLException 为沙漠。
然后是批次的东西,我以某种方式收集。添加了 100 个批次后,我想执行它们,但实际上只执行了最后一个,似乎 addBatch 根本不起作用。
任何人都可以联系,或者遇到类似的事情是受欢迎的,每个巫师都会得到免费的饼干。
jakarta-ee - 容器管理的身份验证,处理当前登录的用户
我已经在帖子中挖掘了太久并且头晕目眩,所以我希望这里的一位大师可以帮助我解决这个问题。
我正在使用容器管理的身份验证,它运行良好。我有我的 Realm 设置来进行身份验证,在 web.xml 中设置受保护的 url,有一个登录页面等。
但现在我遇到了一个问题......
我的数据模型有 JPA 对象,其中一些对象经过“审核”,因为它们跟踪它们的创建或更新时间以及由谁创建或更新。
我@PrePersist
在我的代码中使用一个处理程序来分别设置持久/更新的createdOn
和字段,如下所示:updatedOn
这很好用,但我错过了如何从这里访问当前登录的用户......我需要它才能设置该createdBy
字段。
我正在使用Resteasy并且在我的端点中我确实可以访问登录的用户名并且能够获取我的 Account 对象:
AuthorizationService 是我的,看起来像这样:
这行得通。请注意,我将登录用户缓存在请求属性上,因此我不会每次都将查询发送到数据库。
到目前为止,我已经能够通过这个设置,但我觉得我做这一切都错了......
我想有一个全局拦截点(过滤器?),我用当前登录的用户的 Account 对象填充......某物......(请求?)然后能够在需要的地方注入它......我我会非常喜欢不创建会话的解决方案,因为我正在尝试使应用程序尽可能可扩展。
有关如何处理此问题的任何提示?可能很好地解释了这一点的教程的黄金链接?感谢您的帮助!
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 developerWorks dw Answer
容器管理的身份验证数据源使用 OpenJPA 失败 - 使用 JPA 的IBM WAS Knowledge Center日志记录应用程序
- Apache OpenJPA 文档
OpenJPA 日志记录 - Oracle® Containers for J2EE Enterprise JavaBeans 开发人员指南
使用 EntityManager 访问 JPA 实体 - Oracle® Containers for J2EE Enterprise JavaBeans 开发人员指南
在持久性单元中指定数据源 - IBM developerWorks
使用 WebSphere Application Server Community Edition 开发 JPA 应用程序
更新
尝试了IBM redbook WebSphere Application Server for Developers V7的 JPA 示例。部署应用程序版本 2 并得到相同的错误。
spring - 针对 tomcat-users.xml 的 Spring 身份验证
我被要求必须将应用程序配置为使用 LDAP 或容器管理的身份验证。LDAP 要求已经得到满足,但是容器管理的,在这种情况下容器是 Tomcat,仍然是一个令人头疼的问题。如何使用现有的 Spring Authentication 框架针对 tomcat-users.xml 验证用户详细信息?
非常感谢
安格斯
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:
java - 使用 JDBC Realm 时欢迎页面如何工作?
在设置 JDBC Realm 时,我们指定首先加载用于身份验证的表单登录页面。如果先出现,web.xml 中指定的欢迎文件如何加载?登录成功时,JDBC Realm 会重定向到欢迎文件吗?
hibernate - 如何更改标记为回滚的容器管理事务的状态
在使用容器管理事务和休眠的 ejb 单一 bean 中,按照上面的代码。由于 Duplicate key Exception 运行 em.persist(entity) 后,事务被标记为回滚。但我想保持交易活跃,我怎样才能避免它或将交易状态更改为活跃。