我想将Java EE应用程序中长时间运行的进程从同步执行转移到异步执行.该过程应自动启动,然后每小时运行一次.该项目使用Java EE 6在Glassfish 3.1中运行.
经过一番阅读,我相信我可以通过@Singleton和Java在Java EE 6中启动这样的服务@Startup.所以,我创建了一个新类
@Startup
@Singleton
public class MyService {
}
Run Code Online (Sandbox Code Playgroud)
并通过maven运行现有的集成测试.令我惊讶的是,测试失败了,直到最基本的"页面就在那里" - 测试.他们不再找到网页,而是找到错误页面.
试验,我删除@Startup注释,然后再次运行测试.这一次,他们成功了.
手动启动服务器并导航到页面会产生预期结果:页面在那里.更重要的是,在eclipse中,他们通过两个注释成功完成了测试.我能看到的唯一区别是启动服务器的是eclipse,而不是Cargo Maven插件.
这可能会出错?如何@Startup正确使用我需要做什么?
更新:从eclipse切换回IntelliJ IDEA后,我仍然遇到这个问题.但是,我看到了一些例外情况 - 也许你可以用它们做点什么:
[#| 2011-07-25T10:22:51.529 + 0200 |严重| glassfish3.1 | javax.enterprise.system.tools.deployment.org.glassfish.deployment.common | _ThreadID = 65; _ThreadName =线程1; |调用类org.glassfish.ejb.startup.EjbApplication start方法时出现异常
javax.ejb.EJBException异常:javax.ejb.CreateException:初始化在com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance失败辛格尔顿MailService的在com.sun.ejb.containers.AbstractSingletonContainer $ SingletonContextFactory.create(AbstractSingletonContainer.java:719) (AbstractSingletonContainer.java:449)在org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:216)在org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:177)在org.glassfish. ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:155)在org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:177)...
javax.ejb.CreateException:由初始化引起在com.sun.ejb.containers.AbstractSingletonContainer.access $ 100(AbstractSingletonContainer.java失败辛格尔顿MailService的在com.sun.ejb.containers.AbstractSingletonContainer.createSingletonEJB(AbstractSingletonContainer.java:545) :79)at com.sun.ejb.containers.AbstractSingletonContainer $ SingletonContextFactory.create(AbstractSingletonContainer.java:717)... 36更多
在org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:1209)在org.jboss.weld在java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)显示java.lang.NullPointerException:由造成.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:144)在org.glassfish.weld.services.JCDIServiceImpl._createJCDIInjectionContext(JCDIServiceImpl.java:144)
试图将我的应用程序更新到Java 8,我发现JavaFX UI变得无法使用.整个屏幕都有严格的验证和重新绘制问题,我怀疑MigLayout(4.2)是罪魁祸首,因为其他人似乎也受到了影响:https: //code.google.com/p/miglayout/issues/detail ?ID = 6
我在github上提供了一个问题的运行示例:https: //github.com/UrsKR/miglayout-repaint
它说明在计算初始布局后将节点添加到MigPane时会触发此问题.
如何让他们两个像Java 7/JavaFX 2一样协作?在JavaFX 8中布局的行为方式是否有任何记录?
在我的Maven构建结束时,为此明确目的而存在的一个模块从各种其他模块收集工件,并使用Assembly插件将它们压缩到存档中.完成后,它使用Deploy插件将它们部署到Nexus.
由于历史原因,此包装模块被调用bundle,因此工件最终被调用,因此mygroup:bundle被归类为Nexus.
我宁愿让它们显示在下面mygroup:myprojectname,但我无法弄清楚如何将它们部署到该位置.我已经尝试配置Deploy插件的deploy-file目标来更改坐标,但没有成功.作为一个额外的复杂功能,项目的主代码模块已被调用myprojectname,因此该组在部署时不为空.但是,由于分类器和类型,不需要覆盖任何内容.
没有重命名模块,我能以某种方式这样做吗?