开发第一个无状态会话bean [草稿]

准备事项

1.查询jBoss部署的JNDI,http://localhost:8080/jmx-console/ 路径下,查找jboss-->service=JNDIView-->java.lang.String list()--点击Invoke-->Global JNDI Namespace(这是全部的JNDI,最下面就有自己开发的HelloWorldBean)

2.运行JBoss: jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\bin\run.bat文件

3.jBoss默认部署的路径: jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy下

 

Jboss默认生成的JNDI 名称

当EJB发布到Jboss 时,如果我们没有为它指定全局JNDI名称或修改过其默认EJB名称,Jboss就会按照默认的命名规则为EJB生成全局JNDI名称,默认的命名规则如下:

如果把EJB作为模块打包进后缀为*.ear的JAVA EE企业应用文件,默认的全局JNDI名称是

本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local

远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote

       EAR-FILE-BASE-NAME为ear文件的名称,EJB-CLASS-NAME为EJB的非限定类名。

例:把HelloWorld应用作为EJB模块打包进名为HelloWorld.ear的企业应用文件,它的远程接口的JNDI 名称是:HelloWorld/HelloWorldBean/remote

 

 

如果把EJB应用打包成后缀为*.jar的模块文件,默认的全局JNDI名称是

本地接口:EJB-CLASS-NAME/local

远程接口:EJB-CLASS-NAME/remote

例:把HelloWorld应用打包成HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote

 

开发步骤

1.开发服务端HelloWorldBean.java

2.开发客户端EJBClient.java

3.部署服务到jBoss下,有两种方式:一种是打成*.ear文件,一种是打成*.jar文件,本文采用*.jar文件,不同的发布JNDI的名称会不一样,看【Jboss默认生成的JNDI 名称】这里,现在是把HelloWorld.java和HelloWorld.java打成helloWorld.jar文件部署服务到jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy下,然后运行jBoss,然后客户端调用EJBClient1和EJBClient2两种方式调用.

 

HelloWorld.java

 

package cn.cmcc.ejb3;

 

public interface HelloWorld {

 

public String say(String name);

}

HelloWorldBean.java

package cn.cmcc.ejb3.impl;

 

import javax.ejb.Remote;

import javax.ejb.Stateless;

 

import cn.cmcc.ejb3.HelloWorld;

 

@Stateless //申明是一个无状态bean

@Remote  //申明是一个远程接口,不写默认是本地接口

public class HelloWorldBean implements HelloWorld {

 

@Override

public String say(String name) {

return name+":说,您好";

}

 

}

 

EJBClient1.java

package cn.cmcc.test;

 

import java.util.Properties;

 

import javax.naming.InitialContext;

import javax.naming.NamingException;

 

import cn.cmcc.ejb3.HelloWorld;

 

public class EJBClient1 {

 

public static void main(String[] args) {

Properties props = new Properties();

//JBoss应用服务器的上下文信息

props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");

props.setProperty("java.naming.provider.url", "localhost:1099");

//Sun应用服务器的上下文信息

//props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");

//props.setProperty("java.naming.provider.url", "localhost:3700");

 

try {

InitialContext ctx = new InitialContext(props);

HelloWorld helloworld = (HelloWorld) ctx

.lookup("HelloWorldBean/remote");

System.out.println(helloworld.say("佛山"));

} catch (NamingException e) {

System.out.println(e.getMessage());

}

}

}

 

EJBClient2.java

package cn.cmcc.test;

 

import javax.naming.InitialContext;

import javax.naming.NamingException;

 

import cn.cmcc.ejb3.HelloWorld;

 

public class EJBClient2 {

 

public static void main(String[] args) {

try {

//默认是去classpath下寻找jndi.properties文件

InitialContext ctx = new InitialContext();

HelloWorld helloworld = (HelloWorld) ctx

.lookup("HelloWorldBean/remote");

System.out.println(helloworld.say("佛山"));

} catch (NamingException e) {

System.out.println(e.getMessage());

}

}

}

jndi.properties

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

java.naming.provider.url=localhost:1099

 

 

 

 

Java开发中VO、DTO、DO、BO、PO核心概念解析与分层架构实践 在Java企业级应用开发中,分层架构是构建可维护系统的核心设计思想。其基本原理是通过职责分离,将数据访问、业务逻辑、接口传输等不同关注点划分到独立层次,实现关注点分离。这一设计的技术价值在于提升代码的可读性、可测试性和系统的可扩展性,有效避免代码耦合。在实际应用场景中,数据从数据库到前端展示的流转,需要不同形态的对象来适配各层之间的数据交换,例如在Web API开发、微服务架构和领域驱动设计(DDD)项目中尤为常见。本文聚焦于VO(视图对象)、DTO(数据传输对象)和PO(持久化对象)等关键对象,深入探讨它 阅读详情

相关推荐

Spring Boot OAuth2与JWT权限系统设计:从RBAC到数据权限实战

在构建现代企业级应用时,认证与授权是保障系统安全的核心基础设施。其基本原理是通过一套标准化的协议来验证用户身份并控制其对资源的访问权限。OAuth2作为一种开放的授权框架,定义了资源所有者、客户端、授权服务器和资源服务器之间的标准交互流程,解决了第三方应用安全访问用户资源的问题。而JWT(JSON Web Token)作为一种紧凑的、自包含的令牌格式,能够安全地在各方之间传输声明信息,因其无状态、易于传输的特性,成为实现分布式认证的理想选择。结合Spring Security这一强大的安全框架,开发者可以高

weixin_30352191的博客 426

EJB开发第一个无状态会话bean、开发EJB客户端

开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作。   实体Bean(Entity Bean) 它实际上属于java持久化规范(JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整

jerome 2311

Spring AI Alibaba 1.0:Java原生Agent工程化实践指南

Agent(智能体)是大模型落地企业级应用的核心范式,其本质是将LLM与工具调用、记忆管理、提示词编排和流式响应等能力系统化集成。传统上,Java开发者依赖Python生态(如LangChain)实现Agent,但面临跨语言通信、运维割裂与企业级能力缺失等瓶颈。Spring AI Alibaba 1.0通过深度整合Spring Boot容器、WebFlux响应式栈与Alibaba DashScope模型服务,首次在JVM中提供开箱即用的生产级Agent支持——包括Bean化工具注册、PromptTempla

蓝色妖姬 421

开发第一无状态会话bean

[size=x-large][color=red]1.EJB中有三种bean[/color][/size] [size=large]1.会话bean(session bean)[/size] 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. [size=large]2.实体bean(entity...

guliuchuan1234的专栏 228

德邦2017秋招Java笔试题全解析:HashMap、JVM与线程池核心考点复盘

Java基础是校招笔试的基石,而真正的考察点往往藏在原理之中。从集合框架的HashMap底层结构到JVM内存区域与垃圾回收,再到并发编程的线程池参数与锁机制,每一道笔试题都在检验开发者对语言本质的理解。理解负载因子为何是0.75、对象创建的内存分配流程、volatile与synchronized的边界,才能应对千变万化的题目变体。这些知识不仅是应对笔试的钥匙,更是解决线上OOM、SQL注入、事务失效等真实工程问题的底层支撑。从物流订单状态机到日常CRUD,扎实的Java功底决定了系统的稳定性与可维护性。本文

weixin_30315435的博客 353

Java EJB中有、无状态SessionBean的两个例子

Java EJB中有、无状态SessionBean的两个例子,的无状态SessionBean可,会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;   在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除……

无状态会话Bean的例子

无状态会话Bean的例ConverterEJB:提供简单的货币兑换(1)EJB类:包含两个实现不同货币之间兑换的商业方法:dollarToYen和yenToEuro。代码如下:import java.rmi.RemoteException; import javax.ejb.SessionBean;import javax.ejb.SessionContex

The Tech-Dragon 1946

使用eclipse通过weblogic开发简单的ejb应用(weblogic 10.x & ejb3.x)

使用eclipse通过weblogic开发简单的ejb应用(weblogic 10.x & ejb3.x)

基于NetBeans的Java EE客户端应用程序(一)

文档当前处于草稿状态本教程将展示如何在 NetBeans 平台上方便地创建应用程序客户端。将以 Database Reader 为例进行演示说明。 目录l      要求 l      安装和配置l      项目创建 l      企业应用程序开发 l           修改构建脚本l           从数据库生成实体类 l           创建带有远程接口的(无状态的)会话 Be

软件开发资料汇总 627

从零玩转显示屏:手把手教你用Arduino驱动SPI屏幕(附引脚定义图)

本文提供了一份详尽的Arduino驱动SPI屏幕的入门指南。从SPI接口的核心引脚定义(如DC、RESET)与RGB接口的区别讲起,手把手指导硬件连接与软件库配置,并最终通过一个天气显示器实战项目,帮助读者掌握驱动SPI屏幕、显示RGB色彩内容的核心技能。

weixin_29189987的博客 132

Unity中的坐标系及其转换方法

Unity中的坐标系及其转换方法 Unity中有四种坐标系: 1.全局坐标系 World Coordinate System 全局坐标系是用于描述场景内所有物体位置的方向的基准,也称为世界坐标系,Unity中创建的物体都是以全局坐标系中的坐标原点(0,0,0),来确定各自的位置的,可以使用transform.position来获取游戏对象的世界坐标。 2.局部坐标系 Local Coordinate System 局部坐标系也称为模型坐标系或物体坐标系,每个物体都有自身独立的物体坐标系。当物体移动或改变方向

Z_hongli的博客 8179

基于Spring Boot与Vue的课程作业管理系统:从零到一实战开发指南

在Java Web开发领域,前后端分离架构已成为构建现代企业级应用的主流范式。其核心原理在于将用户界面与业务逻辑解耦,前端专注于数据展示与用户交互,后端则通过RESTful API提供数据服务,两者通过HTTP协议进行通信。这种架构模式的技术价值在于提升了开发效率、便于团队协作,并增强了系统的可维护性和可扩展性。典型的应用场景包括各类后台管理系统、电商平台以及教育信息化系统。本文聚焦于一个具体的工程实践——课程作业管理系统,详细阐述了如何运用Spring Boot、Vue.js和MySQL等技术栈,实现从环

weixin_33675507的博客 332

本体研究综述(转)

(这篇文章是从http://imarine.blog.163.com/中转载过来的,个人觉得对本体的介绍比较全面!)本体综述本体作为一种能在语义和知识层次上描述领域概念的建模工具,其目标是捕获相关领域的知识,确定该领域内共同认可的词汇,通过概念之间的关系来描述概念的语义,提供对该领域知识的共同理解。语义Web(the Semantic Web)是在本体理论基础之上对现有Web所进行的扩展[

zhenshideni611的专栏 1838

工作流与状态机:从核心概念到轻量级引擎设计与实现

在软件系统设计中,状态机和工作流是管理业务过程与状态变迁的核心技术概念。状态机,或称有限状态机,定义了实体在有限状态集合间的确定性转换规则,它通过事件驱动状态变迁,确保了单个实体行为的清晰性与正确性,是构建可靠业务逻辑的基石。工作流则在此基础上,侧重于对多个任务、步骤和角色进行编排与协作,它描述了为达成特定业务目标而设计的自动化或半自动化过程,常用于需要人工干预、条件分支和并行处理的复杂业务场景。从技术价值看,合理运用状态机和工作流能极大提升系统的可维护性、可测试性与可扩展性,将杂乱的流程控制代码转化为结构

weixin_33694172的博客 361

从0死磕全栈之使用 VS Code 调试 Next.js 应用完整指南

调试目标推荐方式客户端组件VS Code + Chrome 调试器(pwa-chrome中间件(Middleware)同服务端方式静态生成(SSG)逻辑需在next build时调试,建议改用dynamic路由临时测试通过合理配置 VS Code 调试器,你可以像调试普通 Node.js 或前端项目一样,高效排查 Next.js 应用中的各类问题。🐞。

weixin_44058951的博客 1164

Qt绘图实战:用QGraphicsItem实现可拖拽箭头连接(附完整代码)

本文详细介绍了如何使用Qt的QGraphicsItem框架实现一个功能完备的可拖拽箭头连接组件。通过核心代码示例,讲解了如何创建自定义图形项、实现智能吸附、碰撞检测以及实时拖拽编辑路径,为构建流程图、拓扑图等专业图形编辑器提供了完整的解决方案。

m2n3b4v5c6的博客 627
上一篇: strust1的的异常--does not contain specified method (check logs)
下一篇: 开发具有本地接口和远程接口的无状态bean
tempdowncomputer
博客等级 码龄16年 2粉丝 405原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值