javax.naming.NamingException:リソースインスタンスを作成できません
Javax Naming Namingexception
今日のオンラインTomcatはSpringBootプログラムを実行してこの例外を報告しましたが、奇妙なことに、私のローカルアイデアのデバッグにはこの問題はなく、正常に実行できます。
catalina.outを見て、いくつかの不可解なエラーを報告しましたが、クラスが見つかりませんでした。しかし、私はこれまでこれらのクラスに触れたことがありません。
次に、次を見てくださいlocalhost.2018-11-27.log
、javax.naming.NamingExceptionが見つかりました:リソースインスタンスを作成できず、my InitListener
をポイントしていますコードの一部は次のとおりです
@WebListener public class InitListener implements ServletContextListener { @Resource private Environment env @Override public void contextInitialized(ServletContextEvent servletContextEvent) { LOG.info('InitListener initialized') String profile = env.getProperty(CommonConstants.PROFILE) AlarmUtil.init(profile) } }
このために推測されます@WebListener
私は1つに参加しました@Resource
アンロードされた使用を引き起こしましたEnvrionment
オブジェクトが引き起こされました。取り外した後、エラーが発生しないことを確認してください。しかし、ここではビジネスが最初に構成をロードする必要があるため、この場所では次のように土壌法を使用しました。
Environment env = (Environment) WebApplicationContextUtils.getWebApplicationContext(servletContextEvent.getServletContext()).getBean('environment')
つまり、SpringのWebApplicationContextは初期化され、servletContextのプロパティとして配置されているため、直接使用して見つけることができます。environment
このBeanのインスタンスが使用されます。
そして、それがうまくいかない前に、@WebListener
with @Resource
初期化シーケンスが原因であり、私は交換しています@AutoWired
またはそうではありません。