我仍然对 JavaEE 缺乏经验。我正在尝试创建一个原型,并且在一周内学到了尽可能多的东西,但是现在我真的陷入了困境。
我通过 POST 从 android 应用程序发送一个 json 对象,然后将内容添加到数据库中。该请求通过我的 servlet 进入,该 servlet 提取数据然后创建一个新实体并用数据填充它。然后我将实体发送到调用保存函数的消息驱动 bean: public void save(Object object) { em.persist(object); em.flush(); servlet 通过 jms/Queue 队列发送实体。
问题:在部署并从应用程序发送请求后,它尝试将信息插入我的数据库(它确实如此),但它似乎继续尝试这样做,用以下内容填充我的控制台:
WARNING: Local Exception Stack
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '2012/03/14-AAAA' for key 'PRIMARY'
Error Code: 1062
我的想法是,消息可能没有正确地从队列中删除,或者可能是它决定继续发送消息的某个地方。我不认为是这种情况,但是我不完全确定 EntityManager 是如何工作的。除了所有这些,我真的不确定要包含哪些代码。
任何帮助都会很棒,我真的很紧张!
谢谢,丹
编辑:使用 MySQL 数据库和 Glassfish 服务器。