EJB注入时出现空指针异常

2024-04-14

我用一个无状态 Ejb 编写了非常简单的 Web 应用程序,当我实现接口时,有趣的时刻到来了 - ejb 依赖注入不起作用:

web.xml

<?xml version="1.0" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
  <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>simpleController</servlet-name>
        <servlet-class>com.SimpleController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>simpleController</servlet-name>
        <url-pattern>*.job</url-pattern>
    </servlet-mapping>
</web-app>

Servlet类

package com;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SimpleController extends HttpServlet {

    @EJB
    private SimpleBean bean;

    @Override
    protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println(bean.getSomeString());
    }

    @Override
    protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

bean

package com;

import javax.ejb.Stateless;

@Stateless
public class SimpleBean /*implements Simple*/ {
    public String getSomeString(){
        return "axaxaxa!";
    }
}

inteface

package com;

import javax.ejb.Remote;

//@Local
@Remote
public interface Simple {
    String getSomeString();
}

因此,当我取消注释“implements Simple”时,我得到了 NullPointerException (在接口中使用 @Remote 或 @Local 注释),在另一种情况下,我得到了“axaxaxa!”。为什么会发生这种情况?我读了Ejb类must实现接口。

我使用 TommEEcas 应用服务器。


通过更改bean变量类型(更改为接口类型而不是类类型)来解决问题

带有 NullPointerException 的版本

private SimpleBean bean;

工作版本

private Simple bean;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EJB注入时出现空指针异常 的相关文章

随机推荐

  • Telegram Bot getUpdates VS setWebhook

    我想为企业开发一个机器人 我不知道使用获取更新 https core telegram org bots api getupdates开发 Windows 桌面应用程序并在 vps 上运行该应用程序的方法 通过https github co
  • 使用 React 动态更改输入文本时如何启用 Ctrl + Z?

    我正在尝试创建一个简单的React Markdown 编辑器 https github com andrerpena react mde 该组件是完全受控的 问题是 如果用户选择abc在文本区域中并单击B按钮 我需要打电话onchange
  • 将函数指针转换为另一种类型

    假设我有一个函数接受void void 用作回调的函数指针 void do stuff void callback fp void void callback arg 现在 如果我有一个这样的函数 void my callback func
  • Flyway可以从数据模型中找到并生成迁移文件吗?

    大家好 我一直在看 Flyway 但我不确定如何使用它 就我而言 我有一个实体模型 使用 JPA 注释 对我来说 有用的是 FlyWay 可以在我每次调用 迁移 并生成迁移文件时找出模型上的更改 这就是 Rails 等的工作方式 Rails
  • 解释一下Smalltalk的一段代码?

    我无法理解这段 Smalltalk 代码 line self upTo Character cr size 0 whileTrue 有人可以帮忙解释一下吗 如果您有代码来源的映像 可以做的一件简单的事情就是在其上运行调试器并单步执行 如果您
  • iOS 模拟器无法访问任何 URL 并显示错误“此连接不是私有的”

    我遇到了一个问题 我的 iPhone 模拟器无法访问 SAFARI 上的任何网站 我也无法从我的应用程序调用任何 API SAFARI 显示的错误是下面提到的两个错误之一 此连接不是私有的 Refer Screenshot OR Safar
  • 如何优化多图像拼接?

    我正在 Visual Studio 2012 C 中进行多图像拼接 我已经修改了缝合 详细 cpp https github com opencv opencv blob master samples cpp stitching detai
  • 查询返回准确的行数

    我有一个表存储两个外键 实现 n m 关系 其中一个指向一个人 subject 另一个针对特定项目 现在 一个人可能拥有的物品数量在另一个表中指定 我需要一个查询 该查询将返回与一个人可能拥有的物品数量相同的行数 其余记录可以填写NULL价
  • ElectronJS - 在窗口之间共享 redux 存储?

    我有一个基于的电子应用程序electron react boilerplate 现在 我有一个窗口按照我希望的方式运行 我开始创建一个新窗口 我目前有 2 个 html 文件 每个窗口一个 包含 div 根 div div div div
  • 父控件的 WPF ContextMenu 在具有自己的 ContextMenu 的子控件上打开

    我在基于 Canvas 的 WPF 中制作了一个相当不错的 NodeGraph 现在我正在通过右键单击菜单添加一些漂亮的功能 这些菜单是上下文相关的 这意味着右键单击图形的背景将显示图形 ContextMenu 而右键单击图形中的节点将显示
  • 将DBContext服务添加到Worker项目中的program.cs中

    对于这一切还相当陌生 所以如果我做了任何愚蠢的事情 我深表歉意 我正在尝试实现一个与我设置的本地 SQL Server Express 数据库进行通信的工作项目 我将连接字符串存储在我的AppSettings Json如下所示 Loggin
  • 为什么 printf 仍然可以在 RAX 小于 XMM 寄存器中 FP 参数数量的情况下工作?

    我正在关注Linux 64系统中的 开始x64汇编编程 一书 我正在使用 NASM 和 gcc 在关于浮点运算的章节中 本书指定了以下用于添加 2 个浮点数的代码 在本书和其他在线资源中 我读到寄存器 RAX 根据调用约定指定要使用的 XM
  • 将数组作为声音播放并并行记录其输出

    我知道 Octave MATLAB 可以将数组作为声音播放 但我想知道 Octave 是否可以做到这一点 我想循环播放一系列频率 并让 Octave 使用计算机上的扬声器播放它们 并让 Octave 也记录使用麦克风输入的声音来获取最大值
  • 关于僵尸进程和线程的问题

    自从我阅读一些有关进程和线程的新主题以来 我脑海中浮现出这些问题 如果有人能帮助我 我会很高兴 1 如果一个线程被标记为不可取消 然后该进程在临界区内被终止 会发生什么 2 我们的程序是否有操作系统已知的主线程 我的意思是操作系统是否给予程
  • MSYS2环境的使用

    我想彻底了解MSYS2平台环境的使用情况 部分描述可在以下位置找到 https www msys2 org docs environments https www msys2 org docs environments 我理解的事情 MSY
  • 如何在 MongoDB 的 Linq 查询中使用 .Contains 和 ToLower?

    MongoDB C Linq 如何在 Linq 查询中使用 contains 和 ToLower List
  • 正则表达式将 10 位数字与特定模式完全匹配

    假设我给出一个模式 123 或 1234 我想匹配以该模式开头的任何 10 位数字 它应该正好有 10 位数字 Example 模式 123 应匹配 1234567890 但不匹配 12345678 我尝试了这个正则表达式 123 d 0
  • 按位运算符的结果是如何产生的?

    我很惊讶我在谷歌上找不到这个听起来简单的问题的答案 在检查了大约十几个不同的页面之后 我只想在这里问 根据这一页 http www leepoint net notes java data expressions bitops html 3
  • 如何在 Android 上回滚事务?

    这是交易的标准习惯用法 db beginTransaction try db setTransactionSuccessful finally db endTransaction 我想添加一个 catch 块 并且我想发出回滚 有可能吗 我
  • EJB注入时出现空指针异常

    我用一个无状态 Ejb 编写了非常简单的 Web 应用程序 当我实现接口时 有趣的时刻到来了 ejb 依赖注入不起作用 web xml