我已经尝试了这里列出的技术:将EJB注入JAX-RS(RESTful服务)
这里的直接注入技术只是给出一个NullPointerException
。@provider
技术提供了NameNotFoundException
,因为它似乎是在提取本地接口的完全限定名。更改代码只使用接口名称似乎没有帮助。
我在耳朵里包装。EJB在JAR中,Jersey资源在WAR中。
在WebLogic10.3.6上的Java EE5上EJB注入到Jersey中是可能的吗?
显然,WebLogic10.3.6没有将本地业务接口注入JNDI注册中心。
根据Oracle支持说明1175123.1,必须将ejb-local-ref
添加到web.xml
:
<ejb-local-ref>
<ejb-ref-name>[Name of EJB local interface here]</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>[Fully qualified path to EJB local interface]</local>
</ejb-local-ref>
ejb-ref-name
与接口名匹配是很重要的,因为下面的代码可以获得接口名来允许注入。
import com.sun.jersey.core.spi.component.ComponentContext;
import com.sun.jersey.core.spi.component.ComponentScope;
import com.sun.jersey.spi.inject.Injectable;
import com.sun.jersey.spi.inject.InjectableProvider;
import java.lang.reflect.Type;
import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.ws.rs.ext.Provider;
/**
* JAX-RS EJB Injection provider.
*/
@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
public ComponentScope getScope() {
return ComponentScope.Singleton;
}
public Injectable getInjectable(ComponentContext cc, EJB ejb, Type t) {
if (!(t instanceof Class))
return null;
try {
Class c = (Class)t;
Context ic = new InitialContext();
String simpleName = String.format("java:comp/env/%s", c.getSimpleName());
final Object o = ic.lookup(simpleName);
return new Injectable<Object>() {
public Object getValue() {
return o;
}
};
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
SimpleSession Bean类(EJB)的代码片段: EJB没有weblogic-ejb-jar.xml部署描述符,因此它是完全注释的EJB。 在管理控制台中部署WAR之后,在servlet中直接注入后,我得到了一个空引用。 http://docs.oracle.com/cd/e14571_01/web.1111/e14529/compatibility.htm “ WebLogic Se
问题内容: 使用Glassfish,我可以设置一个字符串jndi条目: 然后,我可以将此容器配置的字符串注入到我的EJB中: lookup =似乎在内部执行InitialContext.lookup(…)。但是,它使用ejb3.1,但是不幸的是,我的产品环境仅为ejb3.0。 我想我想找出一种方法可以使用@Resource(name =)或@Resource(mappedName =)做类似的事情
我有一个云实例,我已经安装了Jboss5.0.1GA服务器。服务器实例包含一个公共 IP 和一个 nat 地址。我已经使用带有IP(nat)地址的-b运行Jboss服务器,并且网址工作正常。现在我正在创建Java外部客户端来访问部署在Jboss服务器中的EJB3 bean,在那里我得到了例外,并使用谷歌尝试解决方案,这对我的情况没有帮助。找到下面的代码,它告诉我在外部客户端中使用什么来访问EJB3
我在用Spring 奇怪的是:
问题内容: 我是公司产品之一的最终用户。它不太适合集成到Spring中,但是我能够获取上下文的句柄并按名称检索所需的bean。但是,我仍然想知道是否可以将bean注入到此类中,即使该类不是由Spring本身管理的。 说明:管理某个类MyClass的生命周期的同一应用程序也正在管理Spring上下文的生命周期。Spring没有MyClass实例的知识,我想了解如何将实例提供给上下文,但是不能在上下文
我希望能够通过辅助注入创建的对象来发现/注入创建对象的方法的名称。 我想做的一个例子: 不幸的是,到目前为止,我想到的实现这一点的唯一方法是 扩展辅助注射(通过复制和粘贴)以添加我的功能 写一些与辅助注射非常相似的东西,为我做这件事 写很多样板,在没有guices帮助的情况下做到这一点 我正在寻找一个解决方案,大致如下: < li >实现这一点的一些guice配置或模式 < li >实现此功能的一