Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在WebLogicServerV10.3中注入EJB3.0_Java_Ejb_Weblogic_Ejb 3.0_Weblogic 10.x - Fatal编程技术网

Java 在WebLogicServerV10.3中注入EJB3.0

Java 在WebLogicServerV10.3中注入EJB3.0,java,ejb,weblogic,ejb-3.0,weblogic-10.x,Java,Ejb,Weblogic,Ejb 3.0,Weblogic 10.x,我在尝试将无状态EJB注入应用程序客户机项目时遇到了一些问题。应用程序客户端和EJB都在同一个EAR中。使用JNDI,我能够检索EJB实例,但我不确定如何使用@EJB注释来检索。我尝试过使用@EJB(name=“something”)、@EJB(mappedName=“something”),但我得到的只是一个空值。这是我的密码: @Remote public interface TimerEjbTestService { public void testMethod(); } @St

我在尝试将无状态EJB注入应用程序客户机项目时遇到了一些问题。应用程序客户端和EJB都在同一个EAR中。使用JNDI,我能够检索EJB实例,但我不确定如何使用@EJB注释来检索。我尝试过使用@EJB(name=“something”)、@EJB(mappedName=“something”),但我得到的只是一个空值。这是我的密码:

@Remote
public interface TimerEjbTestService {
    public void testMethod();
}

@Stateless(mappedName="TimerEjbTestService")
public class TimerEjbTestBean implements TimerEjbTestService{

    public void testMethod() {
        System.out.println("Inside EJB.");
    }
}
使用JNDI,我可以获得如下实例:

Context ctx = new InitialContext();
TimerEjbTestService timerEjbTestService = (TimerEjbTestService) ctx.lookup("TimerEjbTestService#myejb.timerejbtestservice.services.TimerEjbTestService");

有什么办法吗?

你可以这样做:

@EJB
private TimerEjbTestService myBean;
通过这种方式,容器注入bean


另外,由于它在同一个ear中(因此由同一个JVM运行),因此接口的注释应该是
@Local
而不是
@Remote

,我已经尝试过了,但是我得到的是一个空引用,包括本地注释和远程注释。我也尝试过EJB(mappedName=“TimerEjbTestService”),但没有成功。@carcaret在无状态注释中没有参数mappedName的情况下尝试;或使用名称而不是mappedName。根据规范,mappedName不需要由应用服务器处理:“应用服务器不需要支持任何特定形式或类型的映射名称,也不需要能够使用映射名称。映射名称依赖于产品,通常依赖于安装。”-