1

にC3P0を働いていない、それはエラーをスローし、展開は失敗します。詳細:休止状態4は、JBoss 7

構成コード:

@Configuration 
@EnableTransactionManagement 
@ComponentScan(basePackages = { "com.arg.utility.hibernate" }) 
@PropertySource(value = { "classpath:application.properties" }) 
public class HibernateConfigWS { 

@Bean 
public LocalSessionFactoryBean sessionFactoryWS() throws SQLException, NamingException { 
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
    sessionFactory.setDataSource(dataSourceWS()); 
    sessionFactory.setPackagesToScan(new String[] { "com.arg.utility.hibernate.model" }); 
    sessionFactory.setHibernateProperties(hibernateProperties()); 
    return sessionFactory; 
} 


@Bean 
@Lazy 
public DataSource dataSourceWS() throws SQLException, NamingException { 
    InitialContext initContext = new InitialContext(); 
    DataSource ds = null; 
    try{ 
     ds = (DataSource)initContext.lookup(System.getProperty(UtilityConstants.JNDI_WS_DATASOURCE)); 
    }catch(Exception e){ 
     LOGGER.error("Datasource lookup failed :"+e.getStackTrace()); 
    } 
    return ds; 
} 


@Bean 
public HibernateTransactionManager transactionManagerWS(SessionFactory sessionFactoryWS) { 
    HibernateTransactionManager txManager = new HibernateTransactionManager(); 
    txManager.setSessionFactory(sessionFactoryWS); 
    return txManager; 
} 

    //----------------------HIBERNATE COMMON PROPERTIES CONFIG---------------------// 
/** 
* 
* @return properties object 
*/ 
private Properties hibernateProperties() { 
    Properties properties = new Properties(); 
    properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect")); 
    properties.put("hibernate.show_sql", "false"); 
    properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql")); 
    /*properties.put("hibernate.connection.provider_class", "org.hibernate.c3p0.internal.C3P0ConnectionProvider"); // commented 
    properties.put("hibernate.c3p0.min_size", "5"); // commented 
    properties.put("hibernate.c3p0.max_size", "20"); // commented 
    properties.put("hibernate.c3p0.timeout", "1800"); // commented 
    properties.put("hibernate.c3p0.max_statements", "50");*/ // commented 
    return properties;   
} 

} 

のJBoss 7 standalone.xmlでのデータソースのエントリ:

<datasource jndi-name="java:/WSDataSource" pool-name="WSDataSource" enabled="true" use-java-context="true"> 
       <connection-url>jdbc:mysql://dshost:3306/ds_name</connection-url> 
       <connection-property name="zeroDateTimeBehavior"> 
        convertToNull 
       </connection-property> 
       <driver>com.mysql</driver> 
       <pool> 
        <min-pool-size>0</min-pool-size> 
        <max-pool-size>10</max-pool-size> 
        <prefill>true</prefill> 
       </pool> 
       <security> 
        <user-name>abc</user-name> 
        <password>[email protected]</password> 
       </security> 
       <validation> 
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/> 
        <validate-on-match>false</validate-on-match> 
        <background-validation>true</background-validation> 
        <background-validation-millis>30000</background-validation-millis> 
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/> 
       </validation> 
    </datasource> 

アプリケーションをデプロイするときは、私は次のエラーを取得する:

<<< ServerService Thread Pool -- 68:2017/04/07 16:20:54.676:org.springframework.web.context.ContextLoader::::: Context initialization failed >>> 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerWS' defined in com.arg.hibernate.config.HibernateConfigWS: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
    at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187) 
    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:198) 
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100) 
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Caused by: org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource] 
    at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.unwrap(UserSuppliedConnectionProviderImpl.java:55) 
    at org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:106) 
    at org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:356) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) 
    ... 22 more 

configファイルのc3p0プロパティ設定行のコメントを外すと、アプリケーションはsu (ただし、後で接続を作成する際に例外がスローされます)。しかし、私の要件は、私はc3p0を使用する必要はありません。だから私のクエリ:

  1. c3p0を使わずにJboss 7でHibernate 4を実行することはできますか?
  2. はいの場合、どうですか?他の設定は必要ですか?
+0

'System.getProperty(UtilityConstants.JNDI_WS_DATASOURCE)の値を指定できますか? –

+0

@AlexBarnes値が" java:/ WSDataSource "のプロパティファイルで定数です。 jndiのルックアップはうまくいきますが、問題はありません。 – Pratap

+0

お役立ち情報そして、あなたは 'LocalSessionFactoryBean'すなわち' org.springframework.orm.hibernate4.LocalSessionFactoryBean' –

答えて

2

スタックトレースを見ると、UserSuppliedConnectionProviderImplが参照されます。ここで例外がスローされます。あなたの設定とコードに基づいてConnectionProviderInitiator.initiateService私はこれが代わりにDatasourceConnectionProviderImplのインスタンスになると予想していたでしょう。

AvailableSettings.DATASOURCEは、DataSourceが提供している場合は、LocalSessionFactoryBuilder.LocalSessionFactoryBuilderコンストラクタによって設定されます。あなたのJNDIルックアップが黙ってnullを返していないことを確かめますか?

+0

アレックスありがとうございます。それは本当にヌルを返していた。 jndi名が宣言されたプロパティファイルの綴り間違いでした。 "あなたのJNDIルックアップが黙ってnullを返すのではないですか?"これは全体の違いをもたらしました。ありがとうございました! – Pratap

+0

@AlexBarnes、これで私を助けてください:[リンク](https://stackoverflow.com/questions/45546603/jndi-datasource-for-spring-4-hibernate-4-project-not-working-in- aws) – karthi