Client 连接 EJB 报错信息 之二

本文探讨了一段错误的EJB代码导致的数据库约束冲突问题,并通过对比正确的代码实现来解析如何避免主键不唯一等错误。文章还涉及了在进行用户与分支关系更新时可能出现的异常情况。

Branch oldbranch = manager.find(Branch.class, oldBranchId);
Branch newbranch = manager.find(Branch.class, newBranchId);
User user = manager.find(User.class, userID);

try {
Collection<User> users = newbranch.getUsers();
Collection<Branch> branchs = user.getBranchs();

if (users == null) {
users = new ArrayList<User>();
}

if (branchs == null) {
branchs = new ArrayList<Branch>();
}
if (branchs.contains(oldbranch)) {
branchs.remove(oldbranch);
}
if(!branchs.contains(newbranch))
branchs.add(newbranch);
if (users.contains(user)) {
users.remove(user);
}
else
users.add(user);

newbranch.setUsers(users);
user.setBranchs(branchs);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

但上面的EJB代码写错的时候,如下所示:

// Branch oldbranch = manager.find(Branch.class, oldBranchId);
// User user = manager.find(User.class, userID);
//
// Collection<User> users = oldbranch.getUsers();
// Collection<Branch> branchs = user.getBranchs();
//
// if (users == null) {
// users = new ArrayList<User>();
// }
//
// if (branchs == null) {
// branchs = new ArrayList<Branch>();
// }
// if (!branchs.contains(oldbranch)) {
// branchs.remove(oldbranch);
// }
// if (!users.contains(user)) {
// users.remove(user);
// }
//
// oldbranch.setUsers(users);
// user.setBranchs(branchs);
// }

会导致数据库 约束冲突。主键不唯一的错发生:但是通过JUNIT测试报的错却是:

undeclareMethod
D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53\bin\catalina.bat run [2025-12-15 02:11:13,128] 工件 e-nonmotor:war exploded: 正在等待服务器连接以启动工件部署… Using CATALINA_BASE: "C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd" Using CATALINA_HOME: "D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53" Using CATALINA_TMPDIR: "C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\temp" Using JRE_HOME: "C:\Program Files\Java\jdk8u302-b08" Using CLASSPATH: "D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53\bin\bootstrap.jar;D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53\bin\tomcat-juli.jar" 已连接到地址为 ''127.0.0.1:55150',传输: '套接字'' 的目标虚拟机 15-Dec-2025 14:11:14.049 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/8.5.53 15-Dec-2025 14:11:14.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Mar 11 2020 10:01:39 UTC 15-Dec-2025 14:11:14.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号(:8.5.53.0 15-Dec-2025 14:11:14.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10 15-Dec-2025 14:11:14.051 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Program Files\Java\jdk8u302-b08\jre 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本: 1.8.0_302-b08 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Temurin 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\conf\logging.properties 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55150,suspend=y,server=n 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\captureAgent\debugger-agent.jar=file:/C:/Users/ex_xiachunlin/AppData/Local/Temp/capture.props 15-Dec-2025 14:11:14.053 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512m 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024m 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote= 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.password.file=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\jmxremote.password 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.access.file=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\jmxremote.access 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs= 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=D:\Java\apache-tomcat-retailtech-8.5.53\apache-tomcat-retailtech-8.5.53 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\Users\ex_xiachunlin\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\1a493352-790e-44b1-8bb4-028c885e0cbd\temp 15-Dec-2025 14:11:14.054 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk8u302-b08\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Oracle\product\11.2.0\client_1;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Java\jdk8u302-b08\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Git\cmd;C:\Program Files\maven\apache-maven-3.9.8\bin;C:\Program Files\dotnet\;C:\insolu\client001;C:\Users\ex_xiachunlin\AppData\Local\Microsoft\WindowsApps;;.] 15-Dec-2025 14:11:14.123 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-18081"] 15-Dec-2025 14:11:14.140 信息 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read 15-Dec-2025 14:11:14.148 信息 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 332 ms 15-Dec-2025 14:11:14.182 信息 [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 15-Dec-2025 14:11:14.183 信息 [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.53 15-Dec-2025 14:11:14.192 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-18081"] 15-Dec-2025 14:11:14.206 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 57 ms 已连接到服务器 [2025-12-15 02:11:14,703] 工件 e-nonmotor:war exploded: 正在部署工件,请稍候… 15-Dec-2025 14:11:26.293 信息 [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 [2025-12-15 02:11:26,856] 工件 e-nonmotor:war exploded: 工件已成功部署 [2025-12-15 02:11:26,857] 工件 e-nonmotor:war exploded: 部署已花费 12,153 毫秒 现在启动可以,但是找不到指定的报错HTTP Status 404 – 未找到 Type Status Report 消息 /e-nonmotor/ 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/8.5.53
最新发布
12-16
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值