我正在开发一个使用jetty-env.xml在测试环境中定义一些资源的项目。它要求我劫持它并输入我的用户名和密码来获取资源。有没有办法以外部方式定义我的凭据并使用属性占位符代替?就像在Spring applicationConfig.xml中一样,我可以使用我的系统属性中定义的$ {username}。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext">
<New id="validation_mail" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>mail/exampleMail</Arg>
<Arg>
<New class="org.mortbay.naming.factories.MailSessionReference">
<Set name="user"></Set>
<Set name="password"></Set>
<Set name="properties">
<New class="java.util.Properties">
<Put name="mail.smtp.host">mail.example.edu</Put>
</New>
</Set>
</New>
</Arg>
</New>
<New id="datasource" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>jdbc/DataSource</Arg>
<Arg>
<New class="com.sybase.jdbc3.jdbc.SybDataSource">
<Set name="databaseName">example</Set>
<Set name="serverName">testip.example.edu:2025</Set>
<Set name="portNumber">2025</Set>
<Set name="user">username</Set> <!-- put username here -->
<Set name="password">password</Set> <!-- put password here -->
</New>
</Arg>
</New>
我对这些工具不熟悉,所以我可能比我想的更接近答案。任何帮助将不胜感激。
环境: Spring Tool Suite 3.4.0 RELEASE Maven 3 Jetty插件6.1 春天3
答案 0 :(得分:5)
如果你正在使用jetty maven插件,那么你可以在属性文件中定义你的属性。
像这样配置jetty插件:
<configuration>
<systemPropertiesFile>${project.basedir}/src/test/conf/jetty-env.properties</systemPropertiesFile>
</configuration>
然后你的jetty-env.xml就像这样:
<New id="dsDatasource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/dsProtWb</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">net.sourceforge.jtds.jdbc.Driver</Set>
<Set name='url'>jdbc:jtds:sqlserver://ROPFDN812Q:4900/dlmp_proteomics_wb_dev;instance=FDNDEV18;domain=mfad</Set>
<Set name="username"><SystemProperty name="LANID" /></Set>
<Set name="password"><SystemProperty name="LANPW" /></Set>
</New>
</Arg>
</New>
答案 1 :(得分:3)
您可以定义环境变量并使用Env标记作为占位符。
<New id="dsDatasource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/dsProtWb</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">net.sourceforge.jtds.jdbc.Driver</Set>
<Set name='url'>jdbc:jtds:sqlserver://ROPFDN812Q:4900/dlmp_proteomics_wb_dev;instance=FDNDEV18;domain=mfad</Set>
<Set name="username"><Env name="LANID"/></Set>
<Set name="password"><Env name="LANPW"/></Set>
</New>
</Arg>
</New>