Читаю книгу по JPA
и Hibernate
. В ней дан примерно такой пример:
<persistence-unit name="HelloWorldPU" >
<jta-data-source>myDS</jta-data-source>
<class>org.faoxis.Message</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="java.persistence.schema-generation.database.action" value="drop-and-create" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.use_sql_comments" value="true" />
</properties>
</persistence-unit>
Если сразу запустить, то получу ошибку:
Caused by: org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [myDS]
at org.hibernate.engine.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:124)
at org.hibernate.engine.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:95)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.configure(DatasourceConnectionProviderImpl.java:98)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:242)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259)
... 14 more
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
at javax.naming.InitialContext.getNameParser(InitialContext.java:505)
at org.hibernate.engine.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:118)
... 24 more
В книге написано, что DataSource
будет легко найден через JNDI
. Не понимаю как это работает. Как мне создать этот DataSource
, чтобы его потом можно было найти через JNDI
?
Я сделал DataSource
:
public class DataSourceFactory {
public static DataSource getPostgresDataSource() {
Properties properties = new Properties();
FileInputStream fis = null;
PGSimpleDataSource pgSimpleDataSource = null;
try {
fis = new FileInputStream("db.properties");
properties.load(fis);
pgSimpleDataSource = new PGSimpleDataSource();
pgSimpleDataSource.setUrl(properties.getProperty("DB_URL"));
pgSimpleDataSource.setUser(properties.getProperty("DB_USERNAME"));
pgSimpleDataSource.setPassword(properties.getProperty("DB_PASSWORD"));
} catch (IOException e) {
e.printStackTrace();
}
return pgSimpleDataSource;
}
}
Как мне сделать так, чтобы его нашел JNDI
?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Всем приветВопрос возможно тривиальный, но подскажите, как отобразить сервлет на вебстранице с адресом /hello? С другого сервлета аяксом передается...
пишу приложения и мне нужно будет содержать о юзере данныеНапример имя, избранное , авторизован ли и тд
Здравствуйте, пишу Java EE приложение и возник вопрос о том, как считать данные из элемента HTML - выбранного пользователемДля внешнего вида у меня...