2015-11-06 63 views
1

我有我的執行批處理後,此錯誤:從的.propertiesoracle.net.ns.NetException:套接字讀取超時

2015-11-06 15:45:32,179 [SchemaValidator       ] ERROR | could not get database metadata 
java.sql.SQLRecoverableException: Erreur d'E/S: Socket read timed out 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419) 
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536) 
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228) 
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) 
    at java.sql.DriverManager.getConnection(DriverManager.java:571) 
    at java.sql.DriverManager.getConnection(DriverManager.java:187) 
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173) 
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164) 
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) 
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) 
    at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46) 
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51) 
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:130) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at org.springframework.batch.core.launch.support.CommandLineJobRunner.start(CommandLineJobRunner.java:282) 
    at org.springframework.batch.core.launch.support.CommandLineJobRunner.main(CommandLineJobRunner.java:574) 
Caused by: oracle.net.ns.NetException: Socket read timed out 
    at oracle.net.ns.Packet.receive(Packet.java:321) 
    at oracle.net.ns.DataPacket.receive(DataPacket.java:103) 
    at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:230) 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:175) 
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:100) 
    at oracle.net.ns.Packet.extractData(Packet.java:423) 
    at oracle.net.ns.AcceptPacket.<init>(AcceptPacket.java:136) 
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:312) 
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308) 

這是我的DB配置:

batch.jdbc.driver=oracle.jdbc.driver.OracleDriver 
batch.jdbc.url=jdbc:oracle:thin:@*********:****/***** 
batch.jdbc.user=***** 
batch.jdbc.pwd=***** 

,這是config.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 

    <bean id="dataSourceCredentialsProvider" 
     class="com.natixis.sphinx.security.credentials.AlcasarCredentialsProvider"> 
     <property name="ldapEntry" value="${batch.jdbc.ldapEntry}" /> 
     <property name="application" ref="application" /> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" 
      value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="${batch.jdbc.url}" /> 
     <property name="username" value="${batch.jdbc.user}" /> 
     <property name="password" value="${batch.jdbc.pwd}" /> 
    </bean> 

    <!-- Transaction manager for a single JPA EntityManagerFactory (alternative to JTA) --> 
    <bean id="transactionManager" 
     class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" 
      ref="entityManagerFactory" /> 
    </bean> 

    <!-- Spring Configuration Entity Manager Factory --> 
    <bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 

     <property name="jpaVendorAdapter"> 
      <bean 
       class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
     </property> 
     <property name="jpaPropertyMap"> 
      <map> 
       <entry key="hibernate.cache.use_second_level_cache" 
        value="true" /> 
       <entry key="hibernate.cache.use_query_cache" 
        value="true" /> 
       <entry key="hibernate.cache.provider_class" 
        value="net.sf.ehcache.hibernate.SingletonEhCacheProvider" /> 
       <entry key="hibernate.show_sql" value="true" /> 
       <entry key="hibernate.use_sql_comments" value="false" /> 
       <entry key="hibernate.format_sql" value="false" /> 
       <entry key="hibernate.hbm2ddl.auto" value="validate" /> 
       <entry key="hibernate.dialect" 
        value="org.hibernate.dialect.Oracle10gDialect" /> 
       <entry key="hibernate.temp.use_jdbc_metadata_defaults" 
        value="false" /> 
      </map> 
     </property> 
     <property name="dataSource" ref="dataSource" /> 
    </bean> 
    <bean id="namedParameterJdbcTemplate" 
     class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> 
     <constructor-arg ref="template" /> 
    </bean> 
    <bean id="template" 
     class="org.springframework.jdbc.core.JdbcTemplate"> 
     <property name="dataSource" ref="dataSource" /> 
     <!-- <property name="fetchSize" value="#{pageSize+1}" /> --> 
    </bean> 

</beans> 

其實我可以很容易地訪問我們的本地Web應用程序,我可以在日誌中看到連接t與DB競賽,但批次並非如此。

我在拋出錯誤之前的日誌注意什麼,它在這個日誌級別卡住幾秒鐘:

2015-11-09 09:56:55,728 [DozerBeanMapper       ] INFO | Initializing a new instance of the dozer bean mapper. 

後,我有這樣的:

2015-11-09 09:57:59,227 [JDBCExceptionReporter     ] WARN | SQL Error: 17002, SQLState: 08006 
2015-11-09 09:57:59,227 [JDBCExceptionReporter     ] ERROR | Erreur d'E/S: Socket read timed out 
2015-11-09 09:57:59,232 [CommandLineJobRunner     ] ERROR | Job Terminated in error: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection 
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection 

任何幫助嗎?

+0

看起來OS IP層或防火牆,或選擇網絡設備檢測到非活動連接的時間超過特定時間,並強制關閉它們。 因此,要麼將連接池配置爲在網絡層完成之前關閉空閒連接,要麼在其中配置「保持活動狀態」。 – nabeel

+0

謝謝你的回答。你能幫我在我的情況下如何配置這個? –

+0

我不知道我可以幫忙,因爲我從來沒有這樣做過,但這是連接(用戶/通過@網址)爲其他進程工作?或僅在一段時間後發生異常? – nabeel

回答

0

可能會在服務名稱格式缺少「//」?使用SID

jdbc:oracle:thin:@//<host>:<port>/<service_name> 

Example: jdbc:oracle:thin:@//192.168.2.1:1521/XE 

Oracle JDBC瘦:

Oracle JDBC瘦驅動格式

Oracle JDBC瘦使用服務名稱

jdbc:oracle:thin:@<host>:<port>:<SID> 

Example: jdbc:oracle:thin:192.168.2.1:1521:X01A 

注:SID支持正被逐步出。 Oracle建議用戶切換到使用服務名稱。

Oracle JDBC瘦使用TNSNAME:

jdbc:oracle:thin:@<TNSName> 

Example: jdbc:oracle:thin:@GL 

注:在驅動程序版本10.2.0.1

+0

嗨nabeel。謝謝您的回答。我做了建議的更改:與以前一樣的錯誤。我在最後更新了我的問題,並提供了更多詳細信息,以幫助我更好地理解我的問題 –

0

我解決了這個問題增加了對TNSNAMES支持。我使用的是糟糕的JRE版本。我使用jdk1.7而不是WASD8 JRE。要做到這一點變化,你必須去運行配置 - > JRE - >剔「可替換JRE」,然後在列表WASD8 JRE(也許在你的情況應該是不同勢)

相關問題