我有一个Web应用程序,它依赖于在安装后配置的一些资源和参数,如JDBC连接.
我提出的是在部署应用程序时提供由Tomcat META-INF/context.xml复制[engine-name]/[server-name]/[app-name].xml的内容.这样我所提供的是一个war文件,可以复制到appBase文件夹(webapps).Tomcat的文档说如果有这样的文件,它将不会被覆盖,这真的很棒,因为部署后所做的更改不会丢失.
但是这里有一个微妙的问题:由于我们通过复制到webapps目录来部署应用程序,因此Tomcat将首先卸载现有应用程序以及配置文件.这样,配置文件将被丢失/覆盖,这是不可取的.据我所知,Tomcat 不会修改此行为.
问题是:有没有办法通过以Tomcat不会删除现有配置文件的方式安装应用程序来解决此问题.或者,有更好的方法来打包应用程序吗?
请注意,我们不希望将autoDeploy设置为false,并且我们不能使用人工干预进行安装(使用Tomcat Manager Web应用程序排除).
如果我从.war文件中获取配置文件并将其单独复制[engine-name]/[server-name]/[app-name].xml,Tomcat仍会将其与我的应用程序关联,并在复制新的.war文件后将其删除.
另一个假设是:我们事先并不知道配置的值.我们将仅提供样本配置(占位符,如果您愿意),而实际配置将在稍后的某个时间执行(不一定在安装时间内).
谢谢
如何在字符串文字中添加补充Unicode字符(例如,代码点10400)?我试过像这样放一个代理对:
String text = "TEST \uD801\uDC00";
System.out.println(text);
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
更新:
好消息是,字符串构造正确.
UTF-8中的字节数组:54 45 53 54 20 f0 90 90 80
UTF-16中的字节数组:fe ff 0 54 0 45 0 53 0 54 0 20 d8 1 dc 0
但坏消息是,它打印不正确(在我的Fedora框中),我可以看到一个正方形而不是预期的符号(我的控制台不能正确支持unicode).
我的javascript行:
$('#name').show();
Run Code Online (Sandbox Code Playgroud)
我的webdriver代码行:
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("name"))).sendKeys("Some Name");
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,它会抛出以下异常:
WebDriverException: unknown error: cannot focus element
Run Code Online (Sandbox Code Playgroud)
所以,我一直在寻找解决方案.铬谷歌代码网站报告了一些问题.关于使用有很多建议JavaScriptExecutor.但它对我来说似乎不是一个更好的解决方案,因为它可以制作依赖于浏览器的代码.
假设我有这个命令式代码:
List<Function<T, T>> functions = ...
T value = ...
for (Function<T, T> function : functions) {
value = function.apply(value);
}
Run Code Online (Sandbox Code Playgroud)
我如何在功能样式中写这个(就像Scala中的折叠一样)?
将Web应用程序发布到生产环境时,您会考虑企业应用程序存档还是RPM?
每个人的缺点和优点是什么?
使用RPM,您可以跟踪版本控制并正确处理配置文件.
假设您的应用程序不会安装在Windows机器上,因此操作系统依赖性不是我们担心的问题.
我有2个非常大的数组.
这段代码运行得很慢吗?
results1 = [1,2,3..]
results2 = [1,2,3,4 ... ]
for result1 in results1:
if result1 not in results2:
print result1