我正在尝试编写一个应用程序的自动测试,它基本上将自定义消息格式转换为XML消息并将其发送到另一端.我有一组很好的输入/输出消息对,所以我需要做的就是发送输入消息并监听XML消息从另一端出来.
当需要将实际输出与预期输出进行比较时,我遇到了一些问题.我的第一个想法就是对预期和实际消息进行字符串比较.这样做效果不好,因为我们拥有的示例数据并不总是一致地格式化,并且通常会有不同的别名用于XML命名空间(有时根本不使用命名空间.)
我知道我可以解析两个字符串,然后遍历每个元素并自己进行比较,这不会太困难,但我觉得有一个更好的方法或我可以利用的库.
所以,归结起来,问题是:
给定两个包含有效XML的Java字符串,您将如何确定它们在语义上是否等效?如果您有办法确定差异是什么,可以获得奖励积分.
是否有人使用RoR进行大规模,关键业务的企业应用程序?
是否有其他基于动态语言的轻量级Web框架,人们正在使用这些类型的应用程序?
如果您没有使用这些类型的应用程序框架,那么什么阻止了您?它只是与任何大型IT组织相关的惯性.这些框架的速度和稳定性问题是否足以抵消开发周期时间的改进?
我在Linux服务器上有一个Postgres 8.4数据库,我使用以下命令转储:
pg_dump --format=c --exclude-table=log --file=/path/to/output my_db
Run Code Online (Sandbox Code Playgroud)
然后我将创建的文件ftp到我的本地Windows 7计算机,并尝试使用以下命令将文件恢复到我的本地Postgres 8.4实例:
pg_restore --create --exit-on-error --verbose c:\path\to\file
Run Code Online (Sandbox Code Playgroud)
restore命令生成大量输出,声称它创建了我的数据库,连接到它,然后按预期创建了所有其他表.但是,当我通过pgAdmin查看本地计算机上的数据库时,恢复的数据库根本不存在.
在尝试进行故障排除时,我尝试了以下命令:
pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:\path\to\file
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时,即使给出的主机和用户名是完全无意义的,我仍然可以从命令获得完全相同的输出而没有任何错误.
有没有人遇到这个或知道什么可以导致这个?
如何在Java中创建条形码图像?我需要能够输入数字并生成相应条形码图像的东西.是否有可用于此类任务的免费库?
我正在尝试编写一个正则表达式,它将使用匹配组解析完全限定路径的目录和文件名.
所以...
/var/log/xyz/10032008.log
Run Code Online (Sandbox Code Playgroud)
将承认group 1 to be "/var/log/xyz"和group 2 to be "10032008.log"
看似简单,但我不能让匹配的团队为我的生活工作.
注意:正如一些受访者所指出的,这可能不是正常表达的好用.通常我更喜欢使用我正在使用的语言的文件API.我实际上要做的事情比这复杂得多,但要解释起来要困难得多,所以我选择了一个每个人都熟悉的域名,以便最简洁地描述根本问题.
我正在尝试编写一个方法,它将返回一个基于唯一但非主键的Hibernate对象.如果实体已存在于数据库中,我想返回它,但如果不存在,我想创建一个新实例并在返回之前保存它.
更新:让我澄清一下,我正在编写的应用程序基本上是输入文件的批处理器.系统需要逐行读取文件并将记录插入数据库.文件格式基本上是我们模式中几个表的非规范化视图,所以我要做的是解析父记录,或者将其插入到db中,这样我就可以得到一个新的合成密钥,或者如果它已经存在则选择它.然后我可以在其他表中添加其他关联记录,这些表具有返回该记录的外键.
这很棘手的原因是每个文件需要完全导入或根本不导入,即为给定文件完成的所有插入和更新应该是一个事务的一部分.如果只有一个进程正在执行所有导入,这很容易,但是如果可能的话,我想在多个服务器上解决这个问题.由于这些约束,我需要能够保留在一个事务中,但是处理已经存在记录的异常.
父记录的映射类如下所示:
@Entity
public class Foo {
@Id
@GeneratedValue(strategy = IDENTITY)
private int id;
@Column(unique = true)
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
我最初尝试编写此方法的方法如下:
public Foo findOrCreate(String name) {
Foo foo = new Foo();
foo.setName(name);
try {
session.save(foo)
} catch(ConstraintViolationException e) {
foo = session.createCriteria(Foo.class).add(eq("name", name)).uniqueResult();
}
return foo;
}
Run Code Online (Sandbox Code Playgroud)
问题是当我正在寻找的名称存在时,调用uniqueResult()会抛出org.hibernate.AssertionFailure异常.完整的堆栈跟踪如下:
org.hibernate.AssertionFailure: null id in com.searchdex.linktracer.domain.LinkingPage entry (don't flush the Session after an exception occurs)
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:82) [hibernate-core-3.6.0.Final.jar:3.6.0.Final]
at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:190) [hibernate-core-3.6.0.Final.jar:3.6.0.Final]
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:147) [hibernate-core-3.6.0.Final.jar:3.6.0.Final]
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219) [hibernate-core-3.6.0.Final.jar:3.6.0.Final]
at …Run Code Online (Sandbox Code Playgroud) Tomcat 类加载器HOW-TO文档描述了4种不同的类加载器:
但是,在默认的catalina.properties文件中,还为共享和服务器类加载器定义了属性.在文件的默认版本中,这两个属性都是空的,注释说:
如果保留为空白,则"common"加载程序将用作Catalina的"共享"/"服务器"加载程序.
我无法找到有关这些类加载器的任何其他文档.我的问题是,共享和系统加载器相对于公共加载器的搜索顺序是什么?此外,这些类加载器的用途是什么?
任何人都可以推荐一个好的Java开源库来构建一个简单的SOAP Web服务客户端吗?我正在寻找可在Java 5 SE环境中运行的具有最小依赖性和配置的东西.升级到Java 6并不是这个项目的一个选项,如果我可以避免使用它,我宁愿避免使用完整的J2EE容器.我不需要发布和服务,只需要消费.
我目前正在使用Axis2,但我必须提供大约15MB的额外罐子才能在没有NoClassDefFoundError的情况下对Web服务进行简单的调用,而且我正在寻找一些不那么臃肿的东西.
我也看过CXF,但我不愿意使用它,因为它与Spring紧密耦合.Spring不是100%的交易破坏者,但如果可能的话,我宁愿避免它.
有什么建议?
java ×6
parsing ×2
barcode ×1
classloader ×1
comparison ×1
enterprise ×1
generator ×1
hibernate ×1
pg-dump ×1
pg-restore ×1
postgresql ×1
regex ×1
ruby ×1
soap ×1
testing ×1
tomcat ×1
unique-key ×1
upsert ×1
xml ×1