我已经在tomcat中通过war文件部署了一个spring批处理。 我在服务器启动时使用ContextListener运行批处理。
批处理启动正常,但在数据库初始化期间,db脚本未运行。 该脚本位于WEB-INF / lib文件夹中的jar文件中。 这是config 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资源 [/org/springframework/batch/core/schema-drop-mysql.sql] 在org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) 在org.springframework.core.io.support.EncodedResource.getReader(EncodedResource.java:132) 在org.springframework.jdbc.datasource.init.ScriptUtils.readScript(ScriptUtils.java:278) 在org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:438) ......还有32个
答案 0 :(得分:1)
我想这个:
<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" />
答案 1 :(得分: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>
答案 2 :(得分:0)
这对我有用
<jdbc:initialize-database data-source="dataSource">
<jdbc:script location="classpath:org/springframework/batch/core/schema-drop-oracle10g.sql" />
<jdbc:script location="classpath:org/springframework/batch/core/schema-oracle10g.sql" />
</jdbc:initialize-database>
我正在使用maven作为构建工具并在tomcat上进行部署。
答案 3 :(得分:0)
请注意,您将以两种不同的方式指定两个脚本的位置:一种以df2 = df2.set_index('key')
df1 = df1.set_index('key').reindex(df2.index)
print (df1)
sequence field1 field2
key
2018/01 1 389.0 U
2018/02 2 24.0 A
2018/03 NaN NaN NaN
2017/02 4 NaN R
2017/01 3 80.5 U
df3 = df1 != df2
print (df3)
sequence field1 field2
key
2018/01 False False False
2018/02 False False False
2018/03 True True True
2017/02 False True False
2017/01 True False False
开头,另一种直接使用:jar:file:org/springframework/...
也许当您进行其他人建议的更改时,您仅对其中一个位置进行了更改吗?
但是无论如何,我都面临着同样的问题。添加org/springframework/...
作为前缀对我来说是固定的。我正在使用Java配置来注入脚本位置。以前是这样(“不可行的情况”):
classpath:
但是更改为以下内容后,它起作用了:
@Value("org/springframework/batch/core/schema-drop-postgresql.sql")
private Resource dropRepositoryTables;
@Value("org/springframework/batch/core/schema-postgresql.sql")
private Resource dataRepositorySchema;
然后按如下所示使用值:
@Value("classpath:org/springframework/batch/core/schema-drop-postgresql.sql")
private Resource dropRepositoryTables;
@Value("classpath:org/springframework/batch/core/schema-postgresql.sql")
private Resource dataRepositorySchema;