我在一些设置文件中进行了此设置:
<datasource jndi-name="java:jboss/datasources/DS" pool-name="mysqlDS">
<connection-url>jdbc:mysql://localhost:3306/DSDB</connection-url>
<driver>mysqlDriver</driver>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>200</max-pool-size>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<security-domain>csa-encryption-sec</security-domain>
</security>
#block of code needs to be inserted HERE
</datasource>
这是需要插入的代码块:
<validation>
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<background-validation>true</background-validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"></exception-sorter>
</validation>
我只使用了 sed 简单的东西,但我不知道如何正确使用它,因为我不想替换任何文本,只需添加块另一个内部的代码。有什么想法或建议吗?
答案 0 :(得分:1)
使用sed
,您可以使用r
command执行以下操作:
如果您在文件中有代码块(名为验证):
sed "14r validation" standalone.xml
如果你在变量($validation
)中有它:
sed "14r"<(cat <<<"$validation") file
在第一种方法中,sed
只需插入文件验证。
在第二个中,我们必须根据$validation
中的数据制作文件
实现此目的的一种方法是使用bash的Here Strings(我注意到你在自我回答中使用了bash )和Process Substitution。
使用cat <<<"$validation"
,我们将$validation
扩展为cat
的标准输入。
答案 1 :(得分:0)
这是我迄今为止开发的内容。我担心它是否是一种智能方法。 因为对我而言,它看起来并不优雅:(
#!/bin/bash
validation='\<validation\> \
\<check-valid-connection-sql\>SELECT 1\<\/check-valid-connection-sql\> \
\<background-validation\>true\<\/background-validation\> \
\<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"\>\<\/valid-connection-checker\> \
\<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"\>\<\/exception-sorter\> \
\<\/validation\>'
sed -i "15i $validation" standalone.xml
答案 2 :(得分:0)
git怎么样?只需使用源代码控制系统,然后你就可以拥有一个带有额外块的文件版本和另一个没有额外块的文件。
只是一个想法。