Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / jUnit тест для EJB : NameNotFoundException / 1 сообщений из 1, страница 1 из 1
02.01.2014, 16:06:40
    #38516982
faceless
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jUnit тест для EJB : NameNotFoundException
Добрый день.
Я новичок в EJB и сделал простейший EJB проект, запускающийся с помощью JBoss AS 7.

Сам EJB проект работает. Но возникла проблема при написании Embedded jUnit теста. То есть, который по-умолчанию.

Код теста у меня такой:
Код: 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.StaffBean;
 
public class ProjectTest {
 
    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 {
        StaffBean bean = (StaffBean) ctx.lookup("java:global/StaffBean");
    }
}



При запуске этого теста появляется ошибка от метода ctx.lookup:
ошибкаjavax.naming.NameNotFoundException: StaffBean -- service jboss.naming.context.java.global.StaffBean
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:178)
at org.jboss.as.naming.InitialContext.lookup(InitialContext.java:123)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:214)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.staff.test.logic.ProjectTest.test(ProjectTest.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(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.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.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(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)




Код самого StaffBean выглядит следующим образом:
Код: 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.
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 StaffBean
 */
@Stateless
@LocalBean
public class StaffBean implements StaffBeanRemote {

	@PersistenceContext(unitName="StaffPU")
	EntityManager manager;
	
    public StaffBean() {
    	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;
	}
}



Интерфейс для StaffBean:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
package com.staff.main.logic;

import javax.ejb.Remote;

import com.staff.main.domain.Post;

@Remote
public interface StaffBeanRemote {
	void savePost(Post post);
	Post findPost(long id);
}



И ProjectBean использует сущность Post (Должность).
В БД только одна эта таблица, используется СУБД Oracle 10g.
Код 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;
    }
}



И есть xml-файл 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>



Возможно нужны какие-то еще xml-файлы?
Проблема еще в том, что я не очень понимаю как строится строка для lookup.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / jUnit тест для EJB : NameNotFoundException / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]