@PostConstruct在GlassFish中部署错误

时间:2016-01-14 00:32:01

标签: java spring glassfish

  • 我的项目基于Spring 4.2.3.RELEASE
  • 在使用Tomcat之前,但上次迁移项目有一个ClassLoader问题,然后更改Tomcat 8 for GlassFish 4.1!
  • 在项目中有一个@Component(“i18N”)
  • 在我的对象调用 i18N 中有一个方法
  • 但我要在GlassFish中部署文件 site-1.3.0.0.war
  • 发生了错误的错误
  • 在其他项目中有同样的问题,但我没有时间解决这个问题,现在我需要解决这个问题。

Error occurred during deployment: Exception while deploying the app 
[site-1.3.0.0] : The lifecycle method [init] must not throw a checked exception. Related annotation information: annotation 
[@javax.annotation.PostConstruct()] on annotated element [public void com.sys.resolver.SysResourceBundleRead.init() throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException,org.apache.taglibs.standard.lang.jstl.ELException] of type 
[METHOD]. Please see server.log for more details.

添加方法类

** @PostConstruct public void init()抛出异常{

} **

3 个答案:

答案 0 :(得分:1)

正如错误消息所示,@PostConstruct的方法不得抛出已检查的异常。

所以从方法中删除throws Exception并在方法体中捕获它:

@PostConstruct
public void init() {

   try {
         // bla
   } catch (Exception x) {
        // do something
   }

}

答案 1 :(得分:0)

Here 我已经在我的案例中解决了这个问题。

您可以先添加带有metadata-complete =“true”的web.xml来解决此问题。接下来,您需要确保您的上下文位于Web根目录/ WEB-INF /.

使用此glassfish可以加载所有@PostConstructSpring依赖项。

答案 2 :(得分:0)

我通过在web.xml中添加 metadata-complete =“ true” 来解决:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" metadata-complete="true">