为什么我在initialcontext中找不到我的bean?

vsikbqxv  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(338)

我想测试我的javaee项目。这是简化的结构

  1. -src
  2. - main
  3. - java
  4. - socnet
  5. - services
  6. - AuthService.java
  7. - test
  8. - java
  9. - AuthTest.java

authservice.java文件

  1. package socnet.services;
  2. ...
  3. @Stateless
  4. @LocalBean
  5. public class AuthService {
  6. ...
  7. }

注册测试.java

  1. public class RegistrationTest {
  2. private AuthService aBean;
  3. @Before
  4. public void init() throws NamingException {
  5. Hashtable<String, String> hashtable = new Hashtable();
  6. hashtable.put("java.naming.factory.initial", "org.apache.openejb.client.LocalInitialContextFactory");
  7. hashtable.put("log4j.category.OpenEJB.startup", "debug");
  8. hashtable.put("log4j.category.OpenEJB.options", "debug");
  9. hashtable.put("log4j.category.OpenEJB.startup.config", "debug");
  10. hashtable.put("openejb.deployments.classpath.exclude","");
  11. hashtable.put("openejb.deployments.classpath.include", ".*");
  12. hashtable.put("myDS","new://Resource?type=DataSource");
  13. hashtable.put("myDS.JdbcDriver","org.postgresql.Driver");
  14. hashtable.put("myDS.JdbcUrl","jdbc:postgresql://localhost:5432/testdb-test");
  15. hashtable.put("myDS.JtaManaged","true");
  16. hashtable.put("myDS.DefaultAutoCommit","true");
  17. hashtable.put("myDS.UserName", "admin");
  18. hashtable.put("myDS.Password","1234");
  19. InitialContext ctx = new InitialContext(hashtable);
  20. aBean = (AuthService) ctx.lookup("java:AuthService");
  21. }
  22. @Test
  23. public void saveTest() {
  24. ...
  25. }
  26. }

开始测试时,我出错了 javax.naming.NameNotFoundException: Name "AuthService" not found. 我试着使用@stateles(namemapping=“authservice”),但是没有用。我还尝试了这个代码来查看上下文中的内容

  1. NamingEnumeration<Binding> list = initialContext.listBindings("java:openejb/");
  2. while (list.hasMore()) {
  3. Binding item = list.next();
  4. System.out.println(item.getClassName() +" :: " + "java:openejb/" + item.getName());
  5. }

结果好像没有我的豆子

  1. org.apache.openejb.core.ivm.naming.IvmContext :: java:openejb/local
  2. org.apache.openejb.core.ivm.naming.IvmContext :: java:openejb/remote
  3. org.apache.openejb.core.ivm.naming.IvmContext :: java:openejb/client
  4. org.apache.openejb.core.security.SecurityServiceImpl :: java:openejb/SecurityService
  5. org.apache.openejb.core.ivm.naming.IvmContext :: java:openejb/global
  6. org.apache.openejb.core.ivm.naming.IvmContext :: java:openejb/Deployment
  7. org.apache.openejb.core.ivm.naming.IvmContext :: java:openejb/Resource
  8. org.apache.geronimo.transaction.manager.GeronimoTransactionManager :: java:openejb/TransactionManager

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题