小编Ste*_*n C的帖子

为什么抛出EJBException是一种"推荐"的做法?

我一遍又一遍地从许多开发者那里得到这个"建议".根据我的经验,我发现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的相关案例是什么?

java ejb java-ee

11
推荐指数
1
解决办法
1万
查看次数

将JPA实体与特定于Hibernate的调整分开

我有以下"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)

java persistence hibernate jpa jpa-2.0

11
推荐指数
1
解决办法
2345
查看次数

是"抛出异常"的坏习惯吗?

我正在审查同事的代码,我遇到了一段类似于此的代码:

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

10
推荐指数
1
解决办法
5276
查看次数

Java API中的单例类的示例

Java API中Singleton设计模式的最佳示例是什么?这个Runtime班是一个单身人士吗?

java design-patterns

9
推荐指数
1
解决办法
8619
查看次数

捕获OutOfMemoryError

是否有任何一点java.lang.OutOfMemoryError在Java中捕获内存不足错误()?

java out-of-memory

9
推荐指数
4
解决办法
1万
查看次数

如何使lucene不区分大小写

默认情况下,单词"Word"和"单词"不相同.如何让Lucene不区分大小写?

java lucene

9
推荐指数
2
解决办法
2万
查看次数

部署Java WAR文件时出错:严重:为上下文修复docBase的异常

我已经解决了这个问题,但它可以帮助那些遇到这个问题的人.过去,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文件成功部署!

java windows macos tomcat jruby

9
推荐指数
1
解决办法
8314
查看次数

如何安全地从泛型类型的集合转换为数组?

由于各种原因,我想将列表转换为数组,但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)

java generics

9
推荐指数
1
解决办法
1726
查看次数

为什么Hashmap在内部使用LinkedList而不是Arraylist

为什么Hashmap内部使用a LinkedList而不是Arraylist当两个对象放在哈希表的同一个桶中时?

java hashmap data-structures

9
推荐指数
2
解决办法
6165
查看次数

获取python中函数中使用/调用的函数列表

是否有任何工具/库可以列出在另一个方法/函数中调用的方法/函数列表?

例如:如果该工具或库运行以下方法

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.谢谢!

python python-3.x

9
推荐指数
2
解决办法
1477
查看次数