我使用Maven 2 POM编辑器主要是直接编辑POM XML文件.有没有办法让编辑器始终在"源"选项卡中打开文件?
我想改变Eclipse格式化XML文件的方式.例如,如果我在pom.xml文件中有如下部分:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在ctrl + shift + f后,它将如下所示:
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
3.8.1
</version>
<scope>
test
</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我更喜欢第一个版本,那么如何配置Eclipse来格式化XML文件呢?
我的脚本,我们称之为execute.php,需要在Scripts子文件夹中启动一个shell脚本.脚本必须执行,因此它的工作目录是Scripts.如何在PHP中完成这个简单的任务?
目录结构如下所示:
execute.php
Scripts/
script.sh
Run Code Online (Sandbox Code Playgroud) 任何Java开发人员面临的主要挑战之一就是尽量保持语言和新工具的开发步伐.Java一直在不断发展,我经常从朋友或同事那里听到一些我从未听说过的有用工具.
我很想知道当新的java规范出现或者有趣的新工具发布时人们如何发现?例如,你关注的是哪些java博客?
我正在尝试在Tomcat 6上运行一个应用程序,以通过SSL连接到LDAP服务器.
我使用以下命令将服务器的证书导入密钥库:
C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts"
Run Code Online (Sandbox Code Playgroud)
当我启动Tomcat并启用SSL调试时,根据日志Tomcat使用正确的证书文件:
trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts
Run Code Online (Sandbox Code Playgroud)
但是,Tomcat不会添加我刚导入的证书 - cacerts文件中的所有其他证书都会打印到日志中 - 并且连接失败:
handling exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
重启Tomcat没有帮助.我已经使用keytool -list命令验证了新证书确实存在于该文件中.
为什么Tomcat一直忽视我的新证书?
编辑:
似乎问题是由Windows 7 VirtualStore引起的.Keytool创建了cacert文件的新副本,而Tomcat使用了原始文件.
我需要比较两个对象(同一个类的实例)中的几十个字段,并在存在差异时进行一些日志记录和更新.元代码看起来像这样:
if (a.getfield1 != b.getfield1)
log(a.getfield1 is different than b.getfield1)
b.field1 = a.field1
if (a.getfield2!= b.getfield2)
log(a.getfield2 is different than b.getfield2)
b.field2 = a.field2
...
if (a.getfieldn!= b.getfieldn)
log(a.getfieldn is different than b.getfieldn)
b.fieldn = a.fieldn
Run Code Online (Sandbox Code Playgroud)
所有比较的代码非常简洁,我想以某种方式使它更紧凑.如果我有一个方法可以作为参数方法调用setter和getter,并为所有字段调用它,那将是很好的,但不幸的是,这是不可能的java.
我提出了三个选项,每个选项都有自己的缺点.
1.使用反射API查找getter和setter
Ugly,如果字段名称发生变化,可能会导致运行时错误
2.将字段更改为public并直接操作它们而不使用getter和setter
丑陋并将该类的实现暴露给外部世界
3.让包含类(实体)进行比较,更新已更改的字段并返回日志消息
实体不应参与业务逻辑
所有字段都是字符串类型,如果需要,我可以修改拥有字段的类的代码.
编辑:该类中有一些字段不得比较.
是否可以"自我注入"EJB以便将本地方法作为bean方法调用?在某些情况下,这可能是有利的,例如,如果使用容器管理的事务,并且应该在新的事务中完成某些事情.
这是如何工作的一个例子:
Foo.java:
@Local
public interface FoO {
public void doSomething();
public void processWithNewTransaction(); // this should actually be private
}
Run Code Online (Sandbox Code Playgroud)
FooBean.java:
@Stateless
public class FooBean implements Foo {
@EJB
private Foo foo;
public void doSomething() {
...
foo.processWithNewTransaction();
...
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void processWithNewTransaction() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果我提取processWithNewTransaction()到另一个bean,它将需要在接口中作为公共方法公开,即使它只应该被调用FooBean.(同样的问题是我上面的代码,这就是接口定义中有注释的原因.)
一种解决方案是切换到bean管理的事务.但是,这需要更改整个bean来管理自己的事务,并且会为所有方法添加大量的样板.
我有一个没有主键的MySQL表,我必须将它映射到JPA实体.我无法以任何方式修改表格.
因为实体必须有主键,所以我必须指定一个.如果我确定我在实体中使用的字段(或者字段,我应该选择使用复合主键)在表中始终是唯一的(而不是null),那么表格不能没有在CREATE TABLE中指定的主键导致任何问题?
我们想使用Confluence来编写和管理我们的测试用例.Confluence Testplan插件似乎接近我正在寻找的,但它有点过于简单和有限.
您是如何使用Confluence来管理测试用例的?
java ×5
eclipse ×2
confluence ×1
ejb-3.0 ×1
jpa ×1
keytool ×1
matplotlib ×1
maven-2 ×1
php ×1
reflection ×1
security ×1
testing ×1
tomcat ×1
xml ×1