我知道对于JBoss,您需要在相应实例的/ deploy子目录中使用[name] -ds.xml文件.我没有任何其他Java EE容器的经验,但我试图尽可能地坚持标准.有没有一种标准的方法来定义JDBC数据源并进行部署?如果可能的话,我想将我的数据源包含在*.ear文件中(例如,用于演示目的的嵌入式内存HSQLDB数据源)?
如果没有标准方式,其他容器至少会接受jboss方式吗?(/deploy/*-ds.xml)
假设我有一个名为TEST_SEQ的序列,那么选择下一个值的正确方法是什么?这不起作用:
select next value for TEST_SEQRun Code Online (Sandbox Code Playgroud)
可能是因为它期望一个"FROM"条款.在hibernate中查看HSQLDialect.getSequenceNextValString()我看到了这个:
"select next value for " + sequenceName + " from dual_" + sequenceNameRun Code Online (Sandbox Code Playgroud)
在我的情况下会导致类似于:
select next value for TEST_SEQ from dual_TEST_SEQRun Code Online (Sandbox Code Playgroud)
哪个不适用于2.0.0-rc8(我只假设它适用于2.0之前的版本 - 尚未验证)我遇到了一个解决方案,涉及创建一个简单的表,其中一行称为DUAL,在这种情况下,这将工作(甲骨文风格):
select next value for TEST_SEQ from DUALRun Code Online (Sandbox Code Playgroud)
但是hsqldb没有开箱即用这个表,我不知道如何在"首次启动"时生成这样的表来进行休眠.
我认为必须有一种方法来获得开箱即用的序列的下一个值,我只是错过它.有任何想法吗 ?
假设我有一些jax-rs资源类:
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ResourceA {
@GET
public Something get(@Context UriInfo uriInfo) {
if (...) {
//how to get to ResourceB ?
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想有条件地将调用重定向到其他一些jax-rs资源:
public class ResourceB {
@GET
@Path("{identifier}")
public Other get(@PathParam("identifier")String someArg) {
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?请注意,我不希望这对客户端可见(因此没有http重定向)和通常我想重定向的资源方法不共享相同的签名(他们可能有路径参数等,如我给出的示例).
我在apache tomcat下运行jersey 2.6(它是一个spring应用程序,如果有任何帮助)
编辑 - 我正在寻找一个jax-rs相当于servlet前进.我不想做额外的http跳或担心我自己实例化资源类
我有以下"root"实体(特定于hibernate的部分注释掉):
@Entity
//@GenericGenerator(name="system-uuid",strategy="org.hibernate.id.UUIDGenerator")
public class Node extends PersistentEntity {
private UUID id;
private String name;
private String displayName;
@Id
@GeneratedValue
//@GeneratedValue(generator="system-uuid") //instead of above line
//@Type(type = "pg-uuid")
public UUID getId() { return id; }
public String getName() { return name; }
public String getDisplayName() { return displayName; }
//stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
这是使用PostgreSQL 9为数据库(使用最新的JDBC4驱动程序)部署在JBoss AS 6(hibernate 3.6)上的持久化上下文的一部分.PostgreSQL有自己的uuid列类型,需要一些特定于hibernate的映射才能正确使用(在上面的代码中注释掉) - 否则hibernate将尝试将UUID字段映射到BINARY,然后PostgreSQL方言不支持BINARY(显然是因为postgre有两种方式存储二进制和hibernate devs不喜欢它)并且整个事情爆炸了.
取消注释上面的行产生工作代码,但它迫使我对hibernate有一个编译时依赖 - 我宁愿避免.
尝试将hbm.xml文件添加到混合中并从persistence.xml引用它不会合并文件和注释中的数据,而只是忽略注释:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="package">
<class name="Node">
<id …Run Code Online (Sandbox Code Playgroud) 说我有一个父pom A,由os激活配置文件win32和win64:
<profile>
<id>windows32</id>
<activation>
<os>
<family>windows</family>
<arch>x86</arch>
</os>
</activation>
<properties>
<envClassifier>win-x32</envClassifier>
</properties>
</profile>
<profile>
<id>windows64</id>
<activation>
<os>
<family>windows</family>
<arch>amd64</arch>
</os>
</activation>
<properties>
<envClassifier>win-x64</envClassifier>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
这些配置文件定义了env.像$ {envClassifier}等变量说父模块有一个子模块B,它想在win64上定义一些额外的东西IN ADDITION:
<profile>
<id>windows64</id>
<properties>
<jreName>jre6u27.zip</jreName>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式从父母扩展win64配置文件,或者我注定要复制并粘贴它的激活部分和一切?
我计划在*.properties文件中编写一个用于注释/取消注释/编辑属性的实用程序.我知道我可以使用Properties类读取/修改/编写那些,但我正在寻找一个库,它可以让我访问注释行等内容,在写回等时保留格式和行顺序等.
这样的图书馆存在吗?
我正在寻找一种方法来为maven多模块java 7构建生成简单的度量报告(更具体地说,代码行).
所以我的问题是 - 我该怎么做?
假设我有2个相同类的实例,但它们的行为不同(遵循不同的代码路径)基于构造时设置的最终布尔字段.像这样的东西:
public class Foo {
private final boolean flag;
public Foo(boolean flagValue) {
this.flag = flagValue;
}
public void f() {
if (flag) {
doSomething();
} else {
doSomethingElse();
}
}
}
Run Code Online (Sandbox Code Playgroud)
理论上,2个Foo具有不同值的实例flag可以由2个不同的程序集支持,从而消除了if的成本(对于人为的例子,这是我能想到的最简单的例子).
所以我的问题是 - 任何JVM实际上都这样做吗?或者是一个总是由单个程序集支持的单个类?
我写了以下测试代码:
@Test
public void testLeakWithGrizzly() throws Throwable {
ExecutorService executor = Executors.newFixedThreadPool(N_THREADS);
Set<Future<Void>> futures = new HashSet<>();
InetSocketAddress inetSocketAddress = new InetSocketAddress(localhostAddress, 111);
for (int i = 0; i < N_THREADS; i++) {
Future<Void> future = executor.submit(new GrizzlyConnectTask(inetSocketAddress, requests, bindFailures, successfulOpens, failedOpens, successfulCloses, failedCloses));
futures.add(future);
}
for (Future<Void> future : futures) {
future.get(); //block
}
Thread.sleep(1000); //let everything calm down
reporter.report();
throw causeOfDeath;
}
private static class GrizzlyConnectTask implements Callable<Void> {
private final InetSocketAddress address;
private final Meter requests;
private …Run Code Online (Sandbox Code Playgroud) 是否有一个 checkstyle 规则可以捕获这样的内容:
double result = someInt / someOtherInt;
Run Code Online (Sandbox Code Playgroud)
result 是 double (所以显然需要分数)但右侧会进行整数除法(向下取整)。
这样的东西存在吗?