Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
14 / 14 / 2
Регистрация: 03.02.2010
Сообщений: 142

jUnit тест для EJB : NameNotFoundException

27.12.2013, 15:57. Показов 1028. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Я новичок в EJB и сделал простейший EJB проект, запускающийся с помощью JBoss AS 7.

Сам EJB проект работает. Но возникла проблема при написании теста jUnit с помощью Embedded EJBContainer.

Код теста у меня такой:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.staff.test.logic;
 
import java.io.File;
 
import javax.ejb.embeddable.EJBContainer;
import javax.naming.Context;
import javax.naming.NamingException;
import org.jboss.as.embedded.EmbeddedServerFactory;
import org.jboss.as.embedded.StandaloneServer;
import org.junit.Before;
import org.junit.Test;
import com.staff.main.logic.ProjectBean;
 
public class ProjectBeanTest {
 
    private StandaloneServer    server;
    private static EJBContainer ec;
    private static Context ctx;
    
    @Before
    public void initContainer() throws Exception {
    String jbossHomeDir = System.getenv("JBOSS_HOME");
    System.setProperty("jboss.home","C:/eclipse/jboss-as-7.1.1.Final");
    assert jbossHomeDir != null;
    server = EmbeddedServerFactory.create(new File(jbossHomeDir), System.getProperties(), System.getenv(), "org.jboss.logmanager");
    server.start();
        
    ctx=server.getContext();
    }
 
//    @AfterClass
//    public static void closeContainer() throws Exception {
//        if (ec != null) {
//            ec.close();
//        }
//    }
 
    @Test
    public void test() throws NamingException {
        ProjectBean bean = (ProjectBean) ctx.lookup("java:global/ProjectBean");
    }
}
При запуске этого теста появляется ошибка для метода ctx.lookup:
javax.naming.NameNotFoundException: ProjectBean -- service jboss.naming.context.java.global.Project Bean
at org.jboss.as.naming.ServiceBasedNamingSt ore.lookup(ServiceBasedNamingStore.java: 97)
at org.jboss.as.naming.NamingContext.lookup (NamingContext.java:178)
at org.jboss.as.naming.InitialContext.looku p(InitialContext.java:123)
at org.jboss.as.naming.NamingContext.lookup (NamingContext.java:214)
at javax.naming.InitialContext.lookup(Unkno wn Source)
at com.staff.test.logic.ProjectBeanTest.tes t(ProjectBeanTest.java:80)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$ 1.runReflectiveCall(FrameworkMethod.java :47)
at org.junit.internal.runners.model.Reflect iveCallable.run(ReflectiveCallable.java: 12)
at org.junit.runners.model.FrameworkMethod. invokeExplosively(FrameworkMethod.java:4 4)
at org.junit.internal.runners.statements.In vokeMethod.evaluate(InvokeMethod.java:17 )
at org.junit.internal.runners.statements.Ru nBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(P arentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner .runChild(BlockJUnit4ClassRunner.java:70 )
at org.junit.runners.BlockJUnit4ClassRunner .runChild(BlockJUnit4ClassRunner.java:50 )
at org.junit.runners.ParentRunner$3.run(Par entRunner.java:238)
at org.junit.runners.ParentRunner$1.schedul e(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildr en(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$00 0(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluat e(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(Paren tRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.J Unit4TestReference.run(JUnit4TestReferen ce.java:50)
at org.eclipse.jdt.internal.junit.runner.Te stExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.Re moteTestRunner.runTests(RemoteTestRunner .java:467)
at org.eclipse.jdt.internal.junit.runner.Re moteTestRunner.runTests(RemoteTestRunner .java:683)
at org.eclipse.jdt.internal.junit.runner.Re moteTestRunner.run(RemoteTestRunner.java :390)
at org.eclipse.jdt.internal.junit.runner.Re moteTestRunner.main(RemoteTestRunner.jav a:197)
Код самого ProjectBean выглядит следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.staff.main.logic;
 
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
 
import org.hibernate.ejb.Ejb3Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
 
import com.staff.main.domain.Post;
 
/**
 * Session Bean implementation class ProjectBean
 */
@Stateless
@LocalBean
public class ProjectBean implements ProjectBeanLocal {
 
    @PersistenceContext(unitName="StaffPU")
    EntityManager manager;
    
    public ProjectBean() 
    {  
        Ejb3Configuration cfg = new Ejb3Configuration();
        cfg.configure("StaffPU", null);
        SchemaExport schemaExport = new SchemaExport(cfg.getHibernateConfiguration());
        //schemaExport.setOutputFile("schema.sql");
        schemaExport.create(true, true);
    }
 
    @Override
    public void savePost(Post post){
        manager.persist(post);
    }
 
    @Override
    public Post findPost(long id) {
        Post post=manager.find(Post.class, id);
        return post;
    }
}
У ProjectBean есть интерфейс ProjectBeanLocal:
Java
1
2
3
4
5
6
7
8
9
10
package com.staff.main.logic;
 
import javax.ejb.Local;
import com.staff.main.domain.Post;
 
@Local
public interface ProjectBeanLocal {
    void savePost(Post post);
    Post findPost(long id);
}
И ProjectBean использует сущность Post (Должность).
В БД только одна эта таблица.
Код Post:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.staff.main.domain;
 
import java.io.Serializable;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
 
@Entity
public class Post implements Serializable{
 
    private static final long serialVersionUID = 6767319776206583629L;
    
    @Id
    @SequenceGenerator(name="ent2seq",sequenceName="seq_post")
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="ent2seq")
    private long id;
    
    @Column(nullable=false)
    private String name;
 
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
И есть persistence.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<persistence 
        xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
        version="1.0">
    <persistence-unit name="StaffPU">
        <jta-data-source>java:jboss/datasources/OracleDS</jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="create" />
<!--            <property name="javax.persistence.jdbc.show_sql" value="true" /> -->
<!--            <property name="hibernate.show_sql" value="true" /> -->
        </properties>
    </persistence-unit>
</persistence>
Я побывал вписывать в метод lookup много разных вариантов, но всегда одна и та же ошибка. В чем может быть проблема.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2013, 15:57
Ответы с готовыми решениями:

Junit для EJB: EJBException
Доброе утро. Я сделал простейший проект EJB и сделал к нему простейший Junit-тест. Но появляется ошибка: В проекте есть бин: ...

[JUnit 4] Тест для проверки валидатора email
Особо нет опыта написания юнит тестов, поэтому хочу спросить. Написал такой метод для тестирования валидатора: public void...

Создать простой jUnit тест сервиса на Spring Boot
Доброго времени, хочу написать простой тест, который бы проверял работу сервиса, а именно его метода, который возвращает список объектов...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2013, 15:57
Помогаю со студенческими работами здесь

Как можно сделать тест на то, что вернётся именно моё возвращаемое значение ? (JUnit)
@GetMapping(&quot;/&quot;) @ResponseBody public String index() { Map&lt;String, Object&gt; context = Maps.newHashMap(); ...

JUnit тест для метода int -> String
Хочу написать Unit-тест для метода Foo public class MyService { public String Foo(int value){ ...

Реализация разных @After для тест-методов в Selenium, JUnit
Здраствуйте, изучаю автоматизацию под Selenium, знакомлюсь с JUnit. Возник вопрос. К примеру у нас есть один, и только один класс. В нем...

JUnit как написать тест
Товарищи, доброго времени суток. Хочу научиться правильно писать. И наткнулся на тестирование, почитав, понял что очень интересно, НО...

JUnit, не работает общий тест
Почему все, тесты по отдельности работают, но стоит начать общий тест, всего класса, то почти не чего не работает... public class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru