我一遍又一遍地从许多开发者那里得到这个"建议".根据我的经验,我发现EJBExceptions非常适合从bean实例的角度来看"世界末日"(比如当某些东西错误以至于bean实例无法自行恢复时).如果一个实例可以恢复,我认为最好抛出一个应用程序异常.
这是我一遍又一遍地遇到的模式:
private SomeResource resource;
ejbCreate:
resource = allocateResource(...);
omMessage:
try {
...
} catch (JMSException e) {
throw new EJBException(e);
}
ejbRemove:
freeResource(resource);
恕我直言,这是一个导致资源泄漏的反模式.
编辑:具体来说,EJB规范说如果bean从业务方法抛出运行时异常(并且EJBException是运行时异常),那么bean将被丢弃,而不会在其上调用ejbRemove.
这是否是反对抛出EJBException的相关示例?应该抛出EJBException的相关案例是什么?
我有以下"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) 我正在审查同事的代码,我遇到了一段类似于此的代码:
public X Foo1(Y y) throws Exception {
X result = new X(y);
result.Foo2();
return result;
}
Run Code Online (Sandbox Code Playgroud)
我相信没有必要,throws Exception但我有困难证明这一点.如果它更具体Exception(等等)可能是有意义的FileNotFound,NoMemory但我认为这是不必要的.有人可以告诉我一些可能导致问题的原因以及为什么这是不好的做法?或者这段代码好吗?
Java API中Singleton设计模式的最佳示例是什么?这个Runtime班是一个单身人士吗?
是否有任何一点java.lang.OutOfMemoryError在Java中捕获内存不足错误()?
我已经解决了这个问题,但它可以帮助那些遇到这个问题的人.过去,Stackoverflow在看似模糊和神秘的IT问题上为我节省了无数个小时.
以下是在Windows上将WAR文件部署到Tomcat时出现的错误.WAR文件是使用JRuby和Warbler在Mac上构建的.
SEVERE: Exception fixing docBase for context [/XYZ] java.io.IOException:
The filename, directory name, or volume label syntax is incorrect
Run Code Online (Sandbox Code Playgroud)
根据其他人的说法,WAR文件已损坏,不应通过任何Zip工具打开.此情况并非如此.
相反,经过几个小时的调查后发现我在Warbler路径中有一个文件名为管道"|"的文件 字符.此文件名未故意分配虽然这在Mac上很好,Windows不喜欢它.
解决方案:使用"|"删除文件 在文件名中,WAR文件成功部署!
由于各种原因,我想将列表转换为数组,但Collection包含本身就是泛型的对象.
我已经尝试了以下四个选项来编译它而不需要@supressWarnings('unchecked')注释,但它们都不起作用.是否有解决方案使这项工作正常,或者我被迫使用注释?
Iterator<T>[] iterators;
final Collection<Iterator<T>> initIterators = new ArrayList<Iterator<T>>();
// Type safety: Unchecked cast from Iterator[] to Iterator<T>[]
iterators = initIterators.<Iterator<T>>toArray(
(Iterator<T>[])new Iterator[initIterators.size()]);
// Type safety: Unchecked invocation toArray(Iterator[]) of the generic
// method toArray(T[]) of type Collection<Iterator<T>>
// Type safety: The expression of type Iterator[] needs unchecked conversion
// to conform to Iterator<T>[]
iterators = initIterators.<Iterator<T>>toArray(
new Iterator[initIterators.size()]);
// Type safety: The expression of type Iterator[] needs unchecked conversion
// to conform to Iterator<T>[]
iterators = …Run Code Online (Sandbox Code Playgroud) 为什么Hashmap内部使用a LinkedList而不是Arraylist当两个对象放在哈希表的同一个桶中时?
是否有任何工具/库可以列出在另一个方法/函数中调用的方法/函数列表?
例如:如果该工具或库运行以下方法
def calculate(a: int, b: int, operator: Operator):
if operator == Operator.add:
add(a, b)
elif operator == Operator.subtract
subtract(a, b)
Run Code Online (Sandbox Code Playgroud)
然后它应该返回
1. add
2. subtract
Run Code Online (Sandbox Code Playgroud)
这个问题是几乎相同的这一个,但它为Java.
这是什么基本相同PyCharm的呢Find Usage.谢谢!