我在WebLogic上部署了一个使用Oracle数据库的相对简单的Web应用程序。当我完成应用程序的开发并准备将其部署到生产WebLogic实例所在的实际Linux服务器时,应用程序将在所有插入上抛出DuplicateKeyException。如果我在我的本地Windows机器上运行应用程序并指向远程数据库,该应用程序工作正常。我还应该注意到,数据库中的所有读取都可以完美地完成,在这两种环境中都没有问题。
我已经删除了表上的任何主键约束,只是为了缩小问题范围,但每次我在Linux部署上执行insert查询时,都会失败。在本地使用相同的代码,相同的远程数据库,相同版本的WL(10.3.6),它完美地工作。所以这里的大变量是同一个WAR文件在Linux 10.3.6 WL服务器上抛出DuplicateKeyException,但它不在Windows上。 Linux实例实际上是在Oracle托管环境中,所以虽然DB和WL在不同的服务器上,但我认为由于我的读取命令有效,托管环境不应该与我的插入失败有关。
对此有任何建议或帮助将不胜感激。我不是一个Linux人,只是一个Java开发人员而且我的智慧最终会在这个问题上结束。感谢。
答案 0 :(得分:1)
所以我跟踪了这个问题。我继承的一些GWT代码正在捕获异常并将DuplicateKeyException抛出到客户端。我不确定为什么会抛出这个异常,但是我有一个想法就是停止从一个类中继承,这个类对我来说有一些记录在其中的数据库。由于日志记录将与Linux文件系统而不是Windows进行交互,因此我认为它可能不同。我只是以更原始的方式完成了所有数据库交互并停止使用无关代码,这一切都奏效了。我没有真正深入研究这个问题,除了知道在Linux上部署时日志记录被破坏了。这个特定的程序将由我用来帮助我为一些业务人员生成一些CSV,并且通常我无论如何都不会部署到这个服务器,所以当我找到罪魁祸首时我就停止了。