Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Связывание Bean с БД.


Автор: Gugle 22.8.2008, 09:04
Доброго времени суток!

Создал Bean компонент. Использую сервер FlassFish V2 на одной машине и в него загружаю компонент. На соседней машине крутится MySQL сервер. Теперь хочу с помощью ORM менеджера соединиться с MySQL, для этого используется EntityManager. 
Вот кусок кода:
Код

@Stateless(name="TestBean", mappedName="ejb/TestBean")
public class TestBean implements ru.test.TestRemote, ru.test.TestLocal {

    public TestBean() {
    }

    /**Методы описанные в TestRemote*/


    @PersistenceContext(unitName="MyPersistensUnit") // *
    private EntityManager _manager;
}


* Тут можно задать любое имя?
** Как сказать менеджеру где находтся моя БД?

Автор: alexadr 22.8.2008, 11:24
По первой звезде:
Имя не любое, а то которое указано в persistence.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="Some_Unit" transaction-type="JTA">
    </persistence-unit>
</persistence>

В данном случае должен быть "Some_Unit"

По второй звезде:
1. В persistence.xml файле надо указать в элементе:
<jta-data-source>

jndi имя для датасорса который создан в aplication сервере.

2. Либо можно указать это в свойствах конкретного провайдера. Например для гибернейта:
Код

<properties>
         <property name="hibernate.connection.url" value="some_url"/>
         <property name="hibernate.connection.username" value="some_name"/>
         <property name="hibernate.connection.password" value="some_pass"/>
</properties>

Автор: Gugle 22.8.2008, 16:03
Спасибо alexadr, помогло.

При создании "клиента" для работы с Bean компонентом в надо настроить jndi конект.
Не могу понять откуда брать эти настройки?

Код

public class client {
    
    /** Creates a new instance of client */
    public client() {
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        // TODO code application logic here
        // Настройки jndi контекста.
        Properties jndiProperties = new Properties();
        jndiProperties.setProperty("?!?", "?!?"); // Что тут прописать для соедения с компонентом???

        jndiProperties.setProperty("java.naming.provider.url", "iiop://127.0.0.1:3700");
        Context jndiContext = new InitialContext(jndiProperties);
        
        // Получили ссылку на Bean.
        WareControlRemote control = (WareControlRemote)jndiContext.lookup("ejb/TestBean");
        
        ...
    }
    
}

Автор: alexadr 22.8.2008, 17:01
У меня это выглядит примерно так:
Код

        Hashtable<String, String> env = new Hashtable<String, String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        env.put(Context.PROVIDER_URL, "iiop://localhost:7001");
        Context ctx = new InitialContext(env);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)