ejb3的依赖注入问题

09-02-08 Hqiu
最近看了一下ejb3 in action,其中有个关于依赖注入的问题一直没弄懂,在glassfish下是这样的,

package ejb3inaction.example;

import javax.ejb.Remote;

@Remote

public interface HelloUser {

public void sayHello(String name);

}

package ejb3inaction.example;

import javax.ejb.Stateless;

@Stateless

public class HelloUserBean implements HelloUser {

public void sayHello(String name) {

System.out.println("Hello " + name + " welcome to EJB 3 In Action!");

}

}

客户端的调用是这样的:

package ejb3inaction.example;

import javax.ejb.EJB;

public class HelloUserClient {

@EJB

private static HelloUser helloUser;

public static void main(String[] args) {

helloUser.sayHello("Curious George");

System.out.println("Invoked EJB successfully .. see server console for output");

}

}

不过在jboss4.2.2下的客户端的代码却变成了这样:

public class HelloUserClient {

private static HelloUser helloUser;

public static void main(String[] args) {

try {

Context context = new InitialContext();

helloUser = (HelloUser) context.lookup("chapter1/"

+ HelloUserBean.class.getSimpleName() + "/remote");

helloUser.sayHello("Curious George");

} catch (NamingException e) {

e.printStackTrace();

}

}

}

如果向上面那样用@EJB注解的话会报空指针异常,当然客户端的代码以JAR文件的形式发布在JBOSS容器内的,向各位高手指点!

[该贴被Hqiu于2009-02-08 22:41修改过]

    

banq
2009-02-18 09:24
注射需要在一个EJB容器才能成功

客户端需要注射机制,必须使用Jboss Seam框架才能帮助你注射,否则只能用JNDI。

注射目前没有成为Web容器的标准默认机制,WebBeans正在制定。

猜你喜欢