我正试图进入JAX-RS.我的项目jdk设置为1.7.03.是否必须为JAX-RS(javax.ws.rs)定义注释?如果没有,我可以在哪里找到它们?
我以前写了一个JCA资源适配器.
然而,现在我发现自己处于一个不得不单独写一个来访问BootstrapContext它及其相关的位置WorkManager,并且没有其他原因.
如果我正确地阅读了规范 - 这就是我的问题 - 看起来如果我希望有人能够以符合规范的方式使用我的资源适配器,我仍然需要实现ManagedConnectionFactory,因为它看起来只是按ManagedConnectionFactory实现方式提供的用户连接工厂可通过@Resource注释进行注入.
来吧,再看一遍; 我会等.:-)
在一个完美的世界中,我想编写我的ResourceAdapter实现,注释它@Connector,指定所有@ConfigProperty位,将其打包在一个.rar文件中,并完成它.
但是,在我看来,规范有效地强制要求消费者(在我的情况下是无状态EJB)和资源适配器模块之间的所有通信都应该通过用户连接工厂来完成.
例如,第6.10.1节说:
资源适配器必须提供以下接口的实现:
- javax.resource.spi.ManagedConnectionFactory
- javax.resource.spi.ManagedConnection
- javax.resource.spi.ManagedConnectionMetaData
但是第18节 - 关于注释的部分 - 似乎没有规定以任何有意义的方式强制执行.
确实如此吗?我想它一定是,但我很想听听那些组装了1.6资源适配器的人.
我手头有一个小而完整的Java EE 6应用程序.
传统的注释正在使用: @Resource,@EJB,@Singleton,@PostConstruct,@PreDestroy,@PersistenceContext,@ManagedBean,@ManagedProperty,@RequestScope,@ApplicationScope,...
我想评估是否有必要引入CDI,并标准化依赖注入,bean生命周期管理等的通用策略.
问题:有没有人知道将传统Java EE 6注释转换为CDI注释的好文章,示例或手册?
我刚刚从7.0升级到NetBeans 7.1.在打开一个JSF托管bean时,它"帮助"告诉我它找不到我的beans.xml文件,所以我喜欢它为我创建.我知道我在WEB-INF下有一个beans.xml文件,但我还是说是的,看看发生了什么.我为META-INF创建了一个新的beans.xml.
以为我犯了一个错误,我删除了WEB-INF下的文件只是为了让我的应用程序在启动时失败.将beans.xml放回WEB-INF修复了这个问题.这个页面似乎认为这两个位置都是有效的:http://seamframework.org/Documentation/WhatIsBeansxmlAndWhyDoINeedIt
那么,问题是beans.xml在WEB-INF或META-INF中应该存在哪个文件夹?
我正在运行GlassFish 3.1.1和Java 7
我对javaee Bibliothek有一个maven依赖.
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我在某些类中遇到了Eclipse中的错误.
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/MessagingException
Run Code Online (Sandbox Code Playgroud)
我添加了javax.mail依赖项.
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
它没有用.任何的想法??
在muliple类threadsafe中,EntityManager @Inject [ed]如下所示?
@PersistenceContext(unitName="blah")
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
如何配置计划间隔:
@Schedule(persistent=true, minute="*", second="*/5", hour="*")
在应用程序代码之外?
persistence.xml看起来像这样:
<persistence-unit name="testPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>jdbc/test</non-jta-data-source>
<jar-file>../../lib/app-services-1.0.jar</jar-file>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
它是一个Web项目,因此部署单元是一个war文件.我试图引用的jar文件在WEB-INF/lib /文件夹中,persistence.xml在WEB-INF/classes/META-INF文件夹中.部署时,它只是告诉我
"警告:无法找到文件(忽略):file:.../../lib/app-services-1.0.jar".
我也试过,我能想到的,即每一个可能的路径../lib/app-services-1.0.jar,LIB /应用服务-1.0.jar.
这样做的正确途径是什么?
Java EE 6的一个优点是新的依赖注入框架 - 带有Weld参考实现的CDI - 它促使我们以一种与实现无关的方式开始内部迁移到JSR-330,其明确的目标是能够拥有核心jar被冻结,然后能够添加额外的罐子,提供新的模块替换核心jar中的功能.
我现在正在与Weld一起完成上述工作,坦率地说,封面背后有太多的魔力.无论是工作还是不工作,默认情况下它不会提供很多帮助,因此您可以调查错误并修复它.
我希望有切换开关可以轻松实现以下功能:
换句话说,我需要更详细地看待决策过程.出于某种原因,Guice并不需要这样做,也许是因为魔法少得多,也许是因为错误消息非常好.
您如何调试Weld应用程序,以及它有多大帮助?
我有一个用@Schedule注释的方法,偶尔会被容器调用.
@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void myTimerMethod() throws Exception {
...
}
Run Code Online (Sandbox Code Playgroud)
问题是在某些条件下,我希望此方法抛出异常以使正在进行的事务回滚.但如果我这样做超过两次,计时器将被清除,不再被调用!
INFO: EJB5119:Expunging timer ['68@@1359143163781@@server@@domain1' 'TimedObject = MyBean' 'Application = My-War' 'BEING_DELIVERED' 'PERIODIC' 'Container ID = 89072805830524936' 'Fri Jan 25 21:49:30 CET 2013' '0' '*/5 # * # * # * # * # * # * # null # null # null # true # myTimerMethod # 0' ] after [2] failed deliveries
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用在domain.xml中配置计时器重新安排
<domains>
...
<configs>
<config> …Run Code Online (Sandbox Code Playgroud)