【问题标题】:Java Web Application deployment on JBoss 7.1JBoss 7.1 上的 Java Web 应用程序部署
【发布时间】:2012-06-06 06:19:20
【问题描述】:

我打算使用

开发和部署一个简单的网络应用程序
  1. EJB 3
  2. JSP 和 servlet
  3. JBoss 7
  4. JPA

我已经编写了应用程序并创建了一个具有以下结构的标准耳朵

app.ear

|_ lib(包含所有必需的 jar,例如公共日志记录)

|_ META-INF

   |_ application.xml

   |_ jboss-app.xml

|_ app_ejb.jar(包含无状态 EJB、实体、persistence.xml 等...)

|_ app_web.war(jsps、servlet、web.xml 等)

jboss-app.xml :- (library 是应用名称)

<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 1.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_4_0.dtd">
<jboss-app>
    <loader-repository>library:app=ejb3</loader-repository>
</jboss-app>

application.xml :-

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" version="1.4">

<display-name>library</display-name>

<module>
  <ejb>ejb_library.jar</ejb>
</module>

<module>
    <web>
        <web-uri>web_library.war</web-uri>
        <context-root>web_library</context-root>
    </web>
</module>

</application>

现在当我用 JBoss 7 的管理控制台部署这个耳朵时,似乎已经部署了 web 模块,甚至页面都被命中了。但是,我尝试在 servlet 中注入 EJB(作为使用 @EJB 的实例变量)的应用程序的另一部分失败了。

我部署应用程序的方式似乎有些问题。

我试图找到一个可以在 JBoss 中部署应用程序的教程,但是直到现在我都被困住了。

有人可以指导我吗?我是第一次使用 JBoss,并不完全了解 JBoss 的具体配置。

【问题讨论】:

    标签: jboss


    【解决方案1】:

    您正在注入的 EJB,它是否实现了接口?该接口是否已向服务器注册? @Local 或 @Remote。

    如果不是,请尝试引入@Local 接口,然后您的 EJB 实现实现该接口;然后,使用该本地接口注入 EJB 实现。

    另外,请检查下面的线程;

    JBoss 6: Injecting EJB into servlet

    Inject an EJB into JAX-RS (RESTful service)

    http://docs.jboss.org/ejb3/docs/tutorial/1.0.0/html/Injecting_EJB_in_Servlets.html

    一个愚蠢的想法,但你能重新安排application.xml中的模块声明吗?首先引入 web 模块,然后是 ejb。

    • 模块 -> 网络模块
    • 模块 -> ejb 模块

    另外,这也和你的情况有关: http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/ch01s04s02.html

    【讨论】:

    • 您好 Nav Khan,感谢您的回复。我浏览了您提供的链接,发现我已经以与解释相同的方式实现了代码。唯一缺少的是无状态 Bean 的 @Remote 注释中的接口类名​​称。尽管指定了它,但 bean 不会注入到 servlet 中。你能想到什么问题吗?
    • 忘记指定一个重点。如果 EJB 的源代码随 web war 一起提供,则 EJB 注入成功。但是,如果我为客户端 jar 提供 bean 实现的接口,则不会注入 EJB。这种方法有什么问题吗?
    • 你是如何生成那个ear文件的?您是否使用过 Eclipse EE 应用程序向导?还是你自己组装的?
    • 在同一个 JVM(只是同一个服务器或容器)中访问 EJB 时,还将 Remote 更改为 @Local
    • 用另一个想法编辑了我的回复...以防万一您仍在尝试解决这个问题
    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 2013-03-16
    • 2015-04-13
    • 1970-01-01
    • 2016-09-25
    • 2012-12-30
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多