Java Debugging Deployed Glassfish @PostConstruct无法调试

时间:2014-05-14 08:11:28

标签: java debugging netbeans glassfish-3

我可以在NetBeans中调试Java应用程序,并在NetBeans中调试其他项目。但是,在Glassfish中部署Singleton并在@PostConstruct注释上设置断点时,我无法进行调试。我已将目标服务器设置为debug on并设置调试器应调试的断点,并以调试模式启动服务器。但是,我仍然无法在NetBeans中进行调试。以下是代码:

@Startup
@Singleton
public class Listener {

    @PostConstruct
    public void init() {
        System.out.println("init");   
    }
}

我在System.out.println(" init")语句中设置断点。我遵循的步骤是:

1)构建Jar文件 2)启动Glassfish服务器 3)部署Jar文件 4)以调试模式启动服务器 5)" init"在NetBeans中的控制台中打印但我无法调试。

我尝试在许多不同的端口上附加调试器,但我要么拒绝连接,要么无法调试。

我正在使用NetBeans 1.7.2。我已经尝试过与其他版本的NetBeans相同但仍然存在同样的问题。

以上只是示例代码,但代码更多,但我无法调试。我无法在Google上找到任何解决方案。

你可以尝试一下吗?

2 个答案:

答案 0 :(得分:1)

你必须:

  1. 以调试模式启动服务器(打印时启动dt_socket端口)
  2. 附加调试器调试 - >附加调试器......
  3. 设置断点
  4. 部署您的应用
  5. @PostConstruct在部署期间被调用,因此您提供的步骤顺序不正确,因为在您附加到调试器之前调用了代码。

答案 1 :(得分:0)

你有没有尝试使用eclipse? 我记得,我在eclipse中调试@PostConstruct方法时没有问题。

更多的事情要提到: - 只要您的应用程序存在于服务器上,@ Singleton bean就会存在...所以如果您想调试它的@PostConstruct,我建议打开glassfish服务器控制台,并使用控制台中的禁用应用程序选项......直到,@PostConstruct不会被调用,因为bean是容器管理的......