标签: java-ee-6

EJB测试策略?

我正在研究Java EE 6应用程序.当我开始时,我通过手动实例化EJB,然后手动添加通常由依赖注入提供的成员来为我的EJB类编写测试.随着应用程序变得越来越复杂,我发现这种方法并没有削减它.所以我希望能够在测试框架中启动自己的EJB容器,这样它就可以管理我的bean.什么是最好的方法来解决这个问题?我听说过javax.ejb.embeddable.EJBContainer,还有其他选择吗?

(我正在使用Glassfish 3,并使用Maven构建,如果这有任何区别.)

java ejb glassfish java-ee java-ee-6

7
推荐指数
1
解决办法
2008
查看次数

Jetty 8 + EJB 3.1 + JTA + CDI + JPA 2堆栈?

任何人都可以告诉我,目前是否可以通过Jetty"粘合"部分Java EE 6 Web配置文件?我发现了很多关于将独立EJB 3容器,JTA提供程序等与旧Jetty版本集成的文章,所以如果我可以将它们全部一起工作,我就会更加努力.我想组装一个Servlet 3.0 + CDI + EJB 3.1 + JTA(如果需要,我真正想要的是声明式事务管理)+ Jetty 8上的JPA 2环境(如果没有可用的Jetty替代品,则为Tomcat 7).我的问题是:可以做到吗?有人设法做到了吗?有关将OpenEJB,Atomikos,Weld,EclipseLink和Jetty(或任何其他类似的堆栈)协同工作的任何文章?有没有神奇的"全部"pom.xml文件?

PS:是的,我知道我可以使用GlassFish(我非常喜欢).我只是想知道使用Servlet容器做类似工作有多难,以及两个环境在复杂性,性能,大小,部署速度,硬件资源消耗等方面的比较.

java jetty openejb java-ee-6 ejb-3.1

7
推荐指数
1
解决办法
8939
查看次数

使用@ElementCollection Hibernate未保存的实例异常

我得到一个例外

object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例

抛出以下代码:

public void addThing(String key, String someData) {
    Thing thing = new Thing();
    booking.setData(someData);
    booking.setParent(this);
    bookings.put(key, thing);
}
Run Code Online (Sandbox Code Playgroud)

Parent映射是:

@ElementCollection(fetch=FetchType.EAGER)
@Column(name="thing", nullable=false)
@MapKeyColumn(name="key")
@JoinColumn(name="parent_id")
protected Map<String, Thing> things = Maps.newHashMap();
Run Code Online (Sandbox Code Playgroud)

孩子('Thing')映射是:

@ManyToOne
private Parent parent;
Run Code Online (Sandbox Code Playgroud)

根据Hibernate手册:

a上没有级联选项ElementCollection,目标对象始终与父级一起保持,合并,删除.

但是 - 在我更改为新@ElementCollection映射之前解决了一个问题,即我为查询返回了明显的幻像元素,这段代码工作正常.

我知道我可以单独保存元素然后做一个引用,但我更喜欢自动完成它,我认为这是它应该工作的方式.有任何想法吗?

java hibernate java-ee-6 jpa-2.0

7
推荐指数
1
解决办法
2070
查看次数

使用Java自动重新加载已更改的文件

我有很多配置文件可以修改我的应用程序的行为方式.我希望能够进行更改,并在保存文件时立即反映在应用程序中.有没有Java库来帮助解决这个问题?

我可以简单地保存一个带有时间戳的文件列表,并在时间戳发生变化时不断检查后台线程.似乎并不太难,但也许有更有效的方法来做到这一点?某些属性更改后的自定义触发器会很好.

我使用的是Spring 3.1,是否有内置的机制或解决方案可以很好地与Spring配合使用?

更新:显然JDK7现在通过其 Watch Service API包含此功能:"大多数文件系统实现都具有对文件更改通知的本机支持.Watch Service API利用此支持(如果可用).但是,当文件系统不支持此机制时,Watch Service将轮询文件系统,等待事件." 所以这是我迁移到JDK7的动力.

java file-io spring java-ee java-ee-6

7
推荐指数
1
解决办法
6270
查看次数

如果没有Web层,因此没有HTTP会话,CDI是否有意义?

新的JSR 299"Java EE的上下文和依赖注入"似乎基于"范围"的概念.

创建bean并将其与受支持的Scope之一相关联:Application,Session(映射到HTTP会话),Conversation和Request.

如果没有HTTP会话(例如,通过EJB远程公开功能的企业应用程序),使用CDI是否有意义,因为托管Bean不会与任何上下文相关联(因为它们不存在)?

在这种情况下甚至可以使用CDI吗?它会带来哪些优势?

java cdi java-ee-6 ejb-3.1

7
推荐指数
1
解决办法
362
查看次数

使用从EJB到数据库的流保存blob(以内存有效的方式)

我想在数据库中保存大附件(500Mb,如果可能,甚至> 2Gb).我知道这样做的利弊经常被讨论,但这不是我的问题的焦点.

使用JPA在EJB3中存储Blob字段的传统方法是使用如下代码:

@Lob
private byte[] data;
Run Code Online (Sandbox Code Playgroud)

处理大量数据源时会出现问题,因为整个字节数组都保存在内存中.

我试图将其更改为Blob:

@Lob
private Blob data;
Run Code Online (Sandbox Code Playgroud)

但这会导致同样的问题.打电话的时候

// session: Hibernate session.
// Actually, I'd like to stay with JPA's abstraction and not
// reference Hibernate directly, if possible
Blob data = session.createBlob(inputStream, lengthOfStream);
Run Code Online (Sandbox Code Playgroud)

createBlob方法从inputStream创建一个byteArray.

由于ORM映射,我也想知道如何处理数据的插入.一个想法是创建一个实体变量

@Lob
private byte[] data;
Run Code Online (Sandbox Code Playgroud)

我永远不会用.这样,数据库模式就可以构建了.但是因为@Lob注释是懒惰的,所以它不会让我的记忆膨胀.

然后写

entityManager.persist(dataObject);
// The following lines are _completely_ imaginatory!!
query.prepare("update DataObject d set d.data = :dataInputStream where d = :dataObject");
query.setProperty("dataObject", dataObject);
query.setProperty("dataInputStream", someDataInputStream);
Run Code Online (Sandbox Code Playgroud)

我偶然发现的一个解决方案看起来不错,但是没有使用JPA: Grooviest方法将BLOB存储在数据库中?

有人建议怎么做吗?

ejb jpa blob java-ee-6 jboss7.x

7
推荐指数
1
解决办法
4967
查看次数

如何从Java EE Server(JBoss)上同一个耳朵中的另一场战争中访问文件?

所以下面的问题:我们有一个负载均衡器,后面有n个服务器.在每个服务器上都安装了一个PDF项目(war)以及同一个earfile中的pdf-builder项目(不同的战争).我现在想从另一场战争中读取一个pdf.

问题是:我不知道我正在运行的服务器的IP地址并使用dns查找我可能通过loadbalancer在不同的服务器上结束.此外,访问/安全性约束可能存在问题,因为服务器本身不是有权访问pdf war项目的pdf文件位置的有效用户.

有没有办法获得类似getResourceAsStream()的东西,它可以在耳内的不同模块/ war文件中运行?

java file-io jboss java-ee-6

7
推荐指数
1
解决办法
4830
查看次数

应用程序不是从websphere 8.5.5开始,但在tomcat中工作正常

我有一个可以在tomcat中部署的Web应用程序,但是相同的应用程序没有在websphere 8.5.5中启动.我检查了SystemErr.log文件,它提供了以下信息,我无法调试为什么应用程序没有启动.如果我想更多地了解问题,我需要做什么.

Application Server版本:Websphere 8.5.5
Java版本:java版"1.7.0_25"
OpenJDK运行时环境(rhel-2.3.10.4.el6_4-x86_64)

[12/30/13 12:43:01:144 CET] 000000ab SystemErr     R Caused by: com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load webapp: Failed to load webapp: Context root /* is already bound. Cannot start application My Application
[12/30/13 12:43:01:149 CET] 000000ab SystemErr     R    at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:759)
[12/30/13 12:43:01:149 CET] 000000ab SystemErr     R    at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
[12/30/13 12:43:01:149 CET] 000000ab SystemErr     R    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
[12/30/13 12:43:01:149 CET] 000000ab SystemErr     R    ... 93 more
[12/30/13 12:43:01:149 CET] 000000ab SystemErr     R Caused by: com.ibm.ws.webcontainer.exception.WebAppNotLoadedException: Failed to load …
Run Code Online (Sandbox Code Playgroud)

java websphere guava java-ee-6 websphere-8

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

EJB3.1系统异常与javax.ejb.EJBException

在提出我的问题之前,只是关于EJB3.1异常的一些背景知识 -

应用程序例外包括

  • 用户定义已检查或未检查的具有@ApplicationException批注的异常

  • 所有已检查的例外

    java.lang.Exception及它的子类异常,
    除了java.rmi.RemoteException及它的子类异常

系统例外包括

  • java.rmi.RemoteException和它的子类异常

  • 所有未经检查的例外情况

    java.lang.RuntimeException和它的子类异常
    java.lang.Error及它的子类异常

以下是我在本书中读到的声明

在EJB系统中,客户端不会例外,当遇到此类异常时,这些异常不会按原样传递给客户端,而是在javax.ejb.EJBException中包含.

我的问题 -

  1. 上面描述的所有应用程序异常是否应该由EJB直接抛给客户端?
  2. 如果在抛出到客户端之前将系统异常包装在javax.ejb.EJBException中,那么javax.ejb.EJBException是否被视为系统异常?

java exception java-ee java-ee-6 ejb-3.1

7
推荐指数
2
解决办法
6816
查看次数

什么是 Web 应用程序中的 .jspa URL 扩展名?

在许多在线 Web 应用程序中,我注意到应用程序 url 以 jspa 结尾。我的假设是它是一个 jsp 并且动作被映射到 jspa 而不是 *.do。

我的理解是正确的还是有实际的扩展/不同的含义?如果这个问题非常基本,请建议并忽略。我已经用谷歌搜索了,无法得到明确的答案。

jsp web-applications java-ee-6

7
推荐指数
1
解决办法
4974
查看次数