1. 通过依赖注入访问无状态Session Bean

#1. EJB注入Servlet中

#2. EJB注入JSF中

2. 通过EJB引用访问有状态Session Bean

3. 在工具类中访问Session Bean

 
1. 通过依赖注入访问无状态Session Bean
#1. EJB注入Servlet中
NetBeans创建Java Enterprise Application, di(内嵌di-ejb, di-war)。
di-ejb:
Hello.java
package org.crazyit.service;

import javax.ejb.*;

@Local
public interface Hello
{
String hello(String name);
}

HelloBean.java

package org.crazyit.service;

import javax.ejb.*;

@Stateless(name = "hello")
public class HelloBean implements Hello { public String hello(String name) {
return name + ", How are you, the time now is " + new java.util.Date();
}
}

di-war:

HelloServlet.java

package lee;

import javax.ejb.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*; import org.crazyit.service.*; public class HelloServlet extends HttpServlet { //指定将内部标识名为hello的EJB注入到该Field。
@EJB(beanName = "hello")
private Hello hello; public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
//获取请求参数
String name = request.getParameter("name");
if (name == null || name.equals("")) {
name = "non-login";
}
//调用Session Bean的业务方法
String resultStr = hello.hello(name);
//创建页面输出流
PrintStream ps = new PrintStream(response.getOutputStream());
//将调用EJB的结果输出到客户端
ps.println(resultStr);
}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>lee.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping> <session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

#2. EJB注入JSF中

2. 通过EJB引用访问有状态Session Bean

3. 在工具类中访问Session Bean

JavaEE(19) - Web层和EJB的整合(Session Bean)的更多相关文章

  1. JavaEE(20) - Web层和EJB的整合(Entity Manager)

    1. 使用容器管理的EntityManager 2. 使用应用程序管理的EntityManager 3. 使用ThreadLocal保证EntityManager的线程安全 4. EAO封装JPA 5 ...

  2. j2ee的容器:web容器和ejb容器的概念

    在J2EE中,容器充当的是中间件的角色. 两种主要容器的概念 Web容器 给处于其中的应用程序组件(JSP.Servlet)提供一个环境,使得JSP,Servlet能直接和容器中的环境变量.接口交互而 ...

  3. SSM实战——秒杀系统之Web层Restful url设计、SpringMVC整合、页面设计

    一:Spring整合SpringMVC 1:编写web.xml,配置DispatcherServlet <web-app xmlns="http://java.sun.com/xml/ ...

  4. 03 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之web层

    Github:https://github.com/nnngu 项目源代码:https://github.com/nnngu/nguSeckill 前端交互流程设计 对于一个系统,需要产品经理.前端工 ...

  5. eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis

    接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...

  6. Java高并发秒杀API之web层

    第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我 ...

  7. Web层后端权限模块

    从零开始编写自己的C#框架(19)——Web层后端权限模块   不知不觉本系统写了快三个月了,最近写页面的具体功能时感觉到有点吃力,很多地方如果张嘴来讲的话可以说得很细,很全面,可写成文字的话,就不太 ...

  8. 在J2EE中属于Web层的组件有(选择1项)

    在J2EE中属于Web层的组件有(选择1项) A. HTML B. EJB C. Applet D. JSP 解答:D

  9. JavaEE中表现层、持久层、业务层的职责分析(转载)

    表现层.持久层.业务层 注:本文转载于:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持 ...

随机推荐

  1. Java并发学习之中的一个——线程的创建

    本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.与每一个Java语言中的元素一样,线程是对象.在Java中,我们有两种方式创建线程: a.通过直接继承thread类,然后覆盖run方法. b ...

  2. javascript推断的浏览器类型

    <script> window["MzBrowser"]={};(function() { if(MzBrowser.platform) return; var ua ...

  3. Hadoop认知--在不同的阶段

    入门阶段 出于兴趣,及工作中的简单有用,大约经过1个月的时间,完毕了对Hadoop的基本认知. 在这个月中我干了例如以下几件事 1.大体看了<Hadoop权威指南>.把里面的代码手工码了一 ...

  4. AES加密 C++调用Crypto++加密库 样例

    这阵子写了一些数据加密的小程序,对照了好几种算法后,选择了AES,高级加密标准(英语:Advanced Encryption Standard,缩写:AES).听这名字就非常厉害的样子 预计会搜索到这 ...

  5. Android SVN开发实战的文件夹结构呈现

    svn有一个非常标准的文件夹结构,这是. 例如,该项目是proj.svn地址svn://proj/,然后该标准svn布局是 svn://proj/ | +-trunk +-branches +-tag ...

  6. [Windows Phone] 以多国语言做为开发前提 (2)

    原文:[Windows Phone] 以多国语言做为开发前提 (2) ? 前言 在先前的文章 [Windows Phone 开发 - 以多国语言做为开发前提 (1)] 中说明了简单的多国语言范例,今天 ...

  7. hdu 3333 树状数组+离线处理

    http://acm.hdu.edu.cn/showproblem.php?pid=3333 不错的题,想了非常久不知道怎么处理,并且答案没看懂,然后找个样例模拟下别人的代码立即懂了---以后看不懂的 ...

  8. 读书时间《JavaScript高级程序设计》七:表单

    在HTML中表单是有<form>元素表示,在JS中表单对应的是HTMLFormElement类型. 表单自有的属性和方法: 获取表单 1. 通过ID  document.getElemen ...

  9. Directx11学习笔记【二】 将HelloWin封装成类

    我们把上一个教程的代码封装到一个类中来方便以后的使用. 首先新建一个空工程叫做MyHelloWin,添加一个main.cpp文件,然后新建一个类叫做MyWindow,将于窗体有关的操作封装到里面 My ...

  10. sqlite3触发器的使用

    研究了一下osx下dock中应用的存储,位于~/Library/Application Support/Dock/下一个比較名字比較长的db文件里,之前简单的介绍过osx launchpad图标的删除 ...