1. 程式人生 > 其它 >javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]

javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]

今天嘗試把一個SpringBoot專案由jdk11轉移為jdk8,在IDEA裡執行一切正常。打包,部署到tomcat啟動後,在客戶端呼叫WebSocket出現如下異常:

java.lang.IllegalArgumentException: javax.websocket.DeploymentException: Endpoint instance creation failed
        at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:139)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:
942) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:
659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: javax.websocket.DeploymentException: Endpoint instance creation failed at org.apache.tomcat.websocket.WsSession.<init>(WsSession.java:278) at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:
127) ... 7 more Caused by: javax.naming.NameNotFoundException: Name [cn.aa.bb.cc/userService] is not bound in this Context. Unable to find [cn.aa.bb.cc].
        at org.apache.naming.NamingContext.lookup(NamingContext.java:840)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:172)
        at org.apache.catalina.core.DefaultInstanceManager.lookupFieldResource(DefaultInstanceManager.java:577)
        at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:480)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:173)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
        at org.apache.tomcat.websocket.WsSession.<init>(WsSession.java:275)
        ... 8 more

在網上搜索了一陣也沒有找到解決辦法。回看異常本身,cn.aa.bb.cc/userService 有點問題,cn.aa.bb.cc是Controller類,userService 是類成員變數。通過 @Resource 初始化userService。從異常來看是由於初始化失敗導致的。

 

    @Resource
    private UserService userService;

 

Resource改為Autowired後,再部署執行就沒問題了。

    @Autowired
    private UserService userService;

看來是找不到合適的類來初始化userService啊。