2016-05-18 32 views
0

我已經在tomcat中通過war文件部署了一個spring批處理。 我在服務器啓動時使用ContextListener運行批處理。春季找不到批處理初始化db腳本

批處理啓動正常,但在數據庫初始化期間db腳本未運行。 腳本位於WEB-INF/lib文件夾中的jar文件中。 下面是部分代碼從配置XML -

<jdbc:initialize-database data-source="dataSource"> 
<jdbc:script location="jar:file:org/springframework/batch/core/schema-drop-mysql.sql" /> 
<jdbc:script location="org/springframework/batch/core/schema-mysql.sql" /> 
    </jdbc:initialize-database> 

它給了我下面的例外 -

java.io.FileNotFoundException:無法打開ServletContext的資源 [/組織/ springframework的/批號/核心/ schema-drop-mysql.sql] at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) at org.springframework.core.io.support.EncodedResource.getReader(EncodedResource.java: 132) at org.springframework.jdbc.datasource.i nit.ScriptUtils.readScript(ScriptUtils.java:278) 在org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:438) ...... 32多個

+0

遺漏碼部分 - user3258218

回答

0

我覺得這樣的:

<jdbc:script location="jar:file:org/springframework/batch/core/schema-drop-mysql.sql" /> 

應該是這樣的:

<jdbc:script location="classpath:/org/springframework/batch/core/schema-drop-mysql.sql" /> 
+0

它們都不起作用:-( – user3258218

0

試試這個線。在我的情況下,這些工作正常:

<jdbc:initialize-database data-source="dataSource"> 
    <jdbc:script location="org/springframework/batch/core/schema-drop-mysql.sql"/> 
    <jdbc:script location="org/springframework/batch/core/schema-mysql.sql"/> 
</jdbc:initialize-database> 
+0

不適用於我,你是否已經將它部署爲tomcat上的war?你如何運行你的批處理?通過servlet或上下文列表器? – user3258218

+0

我使用CommandLineJobRunner來運行我的工作。 – Mahendra