EJB的编程限制

Rapid SCADA MQTT 一、配置RapidSCADA 1、准备KpMqtt.dll、Jint.dll库文件,从网盘下载。 2、将以上两个文件拷贝到SCADA安装目录的Comm/KP目录下,如下: C:\SCADA\ScadaComm\KP 3、新建SCADA项目 4、新建Line 5、新建Device 6、拷贝Config目录下的KpMqtt_001.xml文件、KpMqtt_Job.js文件到项目Comm\Config下,如下示例链接 C:\SCADA\Projects\MQTTProject\Instances\Defau 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Enterprise JavaBeans(EJB)是一个开发和部署分布式服务器端的、带事务处理的、安全的商业组件的规范和结构。EJB的体系结构是J2EE的基础和核心,J2EE定义了整个标准的应用开发体系结构和一个部署环境。在这个体系结构中,应用开发者的注意力集中在封装商业逻辑和商业规则上,一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服务器来处理。   甚至,从属于事务、持久化、安全等等方面的应用组件的运行时属性都可以使用高度灵活的声明方法在部署的环境中定制。这个体系结构定义了一个容器和一个服务器模型--容器是应用组件生存和执行的环境,而这个容器却又寄居在一个服务器之中。J2EE平台提供了一个简化的开发模型,它具有工业强度的可扩展性、支持合理的集成和灵活的部署,与开发商和应用服务器无关,这一切使得一些专用的应用服务器和专用的分布式对象框架变得古旧了。   EJB的角色和责任   EJB规范定义了几个标准的角色和责任者,如下:   1.EJB服务器提供商提供的应用服务器应是一个在分布式事务处理、系统服务等方面的专家。   2.EJB容器提供商提供EJB组件实例运行环境和部署工具。EJB 服务器/容器提供商是典型的操作系统开发商、数据库开发商或者是应用服务器开发商。EJB的服务器和EJB的容器应是同一个开发商提供,因为无论是在现在的EJB1.1规范(最终版)还是EJB2.0公共草稿版(正在修改)中都没有定义两者之间的接口。   3.Bean的提供商或者EJB开发者开发的EJB组件都包涵商业逻辑及商业功能。EJB开发者提供的每一个EJB组件都应满足以下条件:EJB的实现中应包括所有必须有的组件-容器合同方法(Contract method),如:ejbCreate(),ejbRemove()等等和一些商业方法(business method);Home接口;Remote接口;如需要还应有帮助类。Home接口为创建、删除和查找EJB实例的方法提供签名,Remote接口定义了商业方法的签名。   4.应用程序组装器把一些由Bean提供商开发的EJB组件组装成一个完整的J2EE应用程序。   5.部署器在应用程序部署的目标产品环境中是专家,它在应用服务器中安装应用组件并配置它们的事务、持久化和安全方面。这样你就可以管理复杂的问题了,诸如:事务处理、并发处理、持久化以及安全。   6.系统管理者负责服务器的配置和管理、运行监控和负载平衡。   7.应用程序的用户界面开发者负责用户界面和表示逻辑。   这篇文章的焦点集中在Bean提供商/EJB开发者方面和EJB组件实现代码的限制方面。   EJB组件的约束   EJB的开发者并不需要在EJB的组件实现代码中编写系统级的服务,EJB提供商/开发者需知道并且严格地遵守一些限制,这些限制与开发稳定的和可移植的EJB组件的利益有关。   以下是你应该回避使用的一些Java特色,并且在你的EJB组件的实现代码中要严格限制它们的使用:   1.使用static,非final 字段。建议你在EJB组件中把所有的static字段都声明为final型的。这样可以保证前后一致的运行期语义,使得EJB容器有可以在多个Java虚拟机之间分发组件实例的灵活性。   2.使用线程同步原语来同步多个组件实例的运行。避免这个问题,你就可以使EJB容器灵活的在多个Java虚拟机之间分发组件实例。   3.使用AWT函数完成键盘的输入和显示输出。约束它的原因是服务器方的商业组件意味着提供商业功能而不包括用户界面和键盘的I/O功能。   4.使用文件访问/java.io 操作。EJB商业组件意味着使用资源管理器如JDBC来存储和检索数据而不是使用文件系统API。同时,部署工具提供了在部署描述器(descriptor)中存储环境实体,以至于EJB组件可以通过环境命名上下文用一种标准的方法进行环境实体查询。所以,使用文件系统的需求基本上是被排除了。   5.监听和接收socket连接,或者用socket进行多路发送。EJB组件并不意味着提供网络socket服务器功能,但是,这个体系结构使得EJB组件可以作为socket客户或是RMI客户并且可以和容器所管理的环境外面的代码进行通讯。   6.使用映象API查询EJB组件由于安全规则所不能访问的类。这个约束加强了Java平台的安全性。   7.欲创建或获得一个类的加载器,设置或创建一个新的安全管理器,停止Java虚拟机,改变输入、输出和出错流。这个约束加强了安全性同时保留了EJB容器管理运行环境的能力。   8.设置socket工厂被URL's ServerSocket,Socket和Stream handler使用。避免这个特点,可以加强安全性同时保留了EJB容器管理运行环境的能力。   9.使用任何方法启动、停止和管理线程。这个约束消除了与EJB容器管理死锁、线程和并发问题的责任相冲突的可能性。   通过限制使用10-16几个特点,你的目标是堵上一个潜在的安全漏洞:   10.直接读写文件描述符。   11.为一段特定的代码获得安全策略信息。   12.加载原始的类库。   13.访问Java一般角色所不能访问的包和类。   14.在包中定义一个类。   15.访问或修改安全配置对象(策略、安全、提供者、签名者和实体)。   16.使用Java序列化特点中的细分类和对象替代。   17.传递this引用指针作为一个参数或者作为返回值返回this引用指针。你必须使用SessionContext或EntityContext中的getEJBObject()的结果。   Java2平台的安全策略   以上所列的特点事实上正是Java编程语言和Java2标准版中的标准的、强有力的特色。EJB容器允许从J2SE中使用一些或全部的受限制的特色,尽管对于EJB组件是不可用的,但需通过J2SE的安全机制来使用而不是通过直接使用J2SE的API。   Java2平台为EJB1.1规范中的EJB容器所制定的安全策略定义了安全许可集,这些许可在EJB组件的编程限制中出现。通过这个策略,定义了一些许可诸如:java.io.FilePermission,java.net.NetPermission,java.io.reflect.ReflectPermission, java.lang.security.SecurityPermission,以便加强先前所列出的编程限制。   许多EJB容器没有加强这些限制,他们希望EJB组件开发者能遵守这些编程限制或者是带有冒险想法违背了这些限制。违背这些限制的EJB组件,比标准方法依赖过多或过少的安全许可,都将很少能在多个EJB容器间移植。另外,代码中都将隐藏着一些不确定的、难以预测的问题。所有这些都足以使EJB组件开发者应该知道这些编程限制,同时也应该认真地遵守它们。   任何违背了这些编程限制的EJB组件的实现代码在编译时都不能检查出来,因为这些特点都是Java语言和J2SE中不可缺少的部分。   对于EJB组件的这些限制同样适用于EJB组件所使用的帮助/访问(helper/access)类,J2EE应用程序使用Java文档(jar)文件格式打包到一个带.ear(代表Enterprise Archive)扩展名的文件中,这个ear文件对于发送给文件部署器来说是标准的格式。ear文件中包括在一个或多个ejb-jar文件中的EJB组件,还可能有ejb-jar所依赖的库文件。所有ear文件中的代码都是经过深思熟虑开发的应用程序并且都遵守编程限制和访问许可集。   未来版本的规范可能会指定通过部署工具来定制安全许可的能力,通过这种方法指定了一个合法的组件应授予的许可权限,也指定了一个标准方法的需求:如从文件系统中读文件应有哪些要求。一些EJB容器/服务器目前在它们的部署工具中都提供了比标准权限或多或少的许可权限,这些并不是EJB1.1规范中所需要的。   理解这些约束   EJB容器是EJB组件生存和执行的运行期环境,EJB容器为EJB组件实例提供了一些服务如:事务管理、安全持久化、资源访问、客户端连接。EJB容器也负责EJB组件实例整个生命期的管理、扩展问题以及并发处理。所以,EJB组件就这样寄居在一个被管理的执行环境中--即EJB容器。   EJB容器也是EJB组件和外部世界的中间者,它提供了客户连接服务来允许应用程序客户访问和使用EJB组件所提供的功能,EJB容器通过bean的Remote和Home接口介入每一个对EJB对象方法的调用。   EJB容器也是EJB组件和访问其它各种资源和服务的中间人,因为EJB容器介入应用组件和J2EE服务,它可以透明地引入组件部署描述符所定义的服务,如:事务管理、安全、持久化、并发处理和状态管理。   资源就是一个封装了访问资源管理器的对象,因为一个资源工厂就是一个用来建造资源的对象。例如,一个JDBC连接代表一个实现了java.sql.Connection接口的对象,它是用来提供访问数据库管理系统的资源,并且实现了javax.sql.DataSource接口的对象是一个这样JDBC连接的资源工厂。同样,定义了许多获得JMS、JavaMail以及URL连接的资源工厂,目前除此之外没有其它的资源工厂了。   (J2EE连接体系结构,目前正在修改,将期盼着包括J2EE未来版本的规范,这个连接体系结构定义了标准的资源适配器和依附于连接、事务、安全管理的合同,所以应用服务器将以标准和统一的方式插入各种企业信息系统,包括ERP(如SAP R/3),主框架事务处理系统和数据库系统。   因为EJB容器完全负责EJB组件的生命期、并发处理、资源访问、安全等等,所以与容器本身的锁定和并发管理相冲突的可能性就需要消除,许多限制都需要使用来填上潜在的安全漏洞。除了与EJB容器责任与安全冲突的问题,EJB组件还意味着仅仅聚焦于商务逻辑,它依赖于EJB容器所提供的服务而不是自己来直接解决底层的系统层的问题。   可能的问题   通常,EJB组件在容器之间的移植不可避免地与如下问题相关:   1.它需要依靠的受限制的特点在特定EJB容器中没有得到加强。   2.它需要依靠的非标准的服务从容器中可获得。   为了保证EJB组件的可移植性和一致的行为,你应该使用一个具有与Java2平台安全策略集相一致的策略集的容器来测试EJB组件,并且其加强了前述的编程限制。   总结   EJB组件开发者应该知道这些推荐的关于EJB组件的编程限制,明白它们的重要性,并且从组件的稳定性和可移植性利益方面考虑来遵循它们。因为这些编程限制能阻止你使用标准的Java语言的特点,违背了这些编程限制在编译时不会知道,并且加强这些限制也不是EJB容器的责任。所有这些原因都使你应很小心地遵守这些编程限制,这些限制在组件的合同中已经成为了一个条款,并且它们对于建造可靠的、可移植的组件是非常重要的。
【Windows Server 2019】企业虚拟专用网络服务的配置和管理(上) 博文介绍了部署企业虚拟专用网的定义,目的,以及好处。同时说明了实验拓扑图以及虚拟专用网络的工作原理。 阅读详情

相关推荐

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 212

EJB的超时策略:它们如何提供帮助?

EJB 3.1在其API中引入了与超时相关的注释。 @AccessTimeout @StatefulTimeout 让我们快速看一下它们是什么以及它们为什么重要 @AccessTimeout 指定一个排队请求(等待另一个线程完成)超时的时间段。 当您的会话bean实例被并发请求轰炸时,EJB容器通过序列化这些调用(即阻塞其他线程直到当前线程完成执行)来确保完整性。 您...

最佳 Java 编程 387

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

一个简单的EJB例子

转载自http://blog.sina.com.cn/s/blog_678530f60100hvwy.html 声明:这个Converter的例子应该是J2EE 1.4 Tutorial上面的。不过那上面都是用NetBeans开发的。让人知其然,不知所以然。同时本文参考了网上的一些资料。算不上原创,只能说是把别人 的东西拿来总结了一下。 1、开发环境:W...

dichen3940的博客 383

MAC M1用户必看:UTM虚拟机安装Win11全流程避坑指南(附驱动下载)

本文为MAC M1用户提供UTM虚拟机安装Win11的完整指南,涵盖镜像准备、驱动优化及性能调优等关键步骤。特别针对TPM 2.0验证、网络连接等常见问题提供解决方案,帮助用户高效运行Windows 11 ARM版。

weixin_29204205的博客 342

2-6-1-1 QNX编程入门之进程和线程(一)

文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。

星原飞火的博客 1324

EJB的编程限制[收藏]

Enterprise JavaBeans(EJB)是一个开发和部署分布式服务器端的、带事务处理的、安全的商业组件的规范和结构。EJB的体系结构是J2EE的基础和核心,J2EE定义了整个标准的应用开发体系结构和一个部署环境。在这个体系结构中,应用开发者的注意力集中在封装商业逻辑和商业规则上,一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服务器来处理。      甚至,从属于事务、持久化

新宾二亮子 1055

基于openwrt平台搭建局域网技术验证之四

1、测试目的 验证l2tp客户端模式的可行性。 提供vpn-l2tp模式的客户端功能。 2、参考资料 参考链接1:https://www.lucktang.com/191.html 3、测试过程 测试过程需要用到的资源: 路由器俩个 win7系统电脑俩台 ③ 交换机一个 ④ 网线三根 测试组网如下图所示: 组网说明: R0公司路由器 S1 交换机 R1 路由器1 R2 路由器2 PC1 个人电脑1 PC2 个人电脑2 (R0) lan口接(S1)...

caofengtao1314的专栏 1962

应该回避使用的一些 java 特色

包括在一个或多个 ejb-jar 文件中的 ejb 组件,还可能有 ejb-jar。建议你在 ejb 组件中把所有的。ejb 容器是 ejb 组件生存和执行的运行期环境,ejb 容器为 ejb 组。检查出来,因为这些特点都是 java 语言和 j2se 中不可缺少的部分。语义,使得 ejb 容器有可以在多个 java 虚拟机之间分发组件实例的。你就可以使 ejb 容器灵活的在多个 java 虚拟机之间分发组件实例。限制的特色,尽管对于 ejb 组件是不可用的,但需通过 j2se 的安全。

hhappy0123456789的博客 810

【以太网硬件十二】以太网端口自协商过程解密之二

简述以太网端口自协商的过程

highman110的博客 2490

UDF学习(四)FLUENT UDF-DEFINE_PROFILE宏

利用DEFINE_PROFLILE可以指定以下边界或计算域信息:DEFINE_PROFILE(name,t,i)//既可以用。

weixin_44386973的博客 1807

绕过Java开发瓶颈:解析EJB

Enterprise JavaBeans(EJB)是一个开发和部署分布式服务器端的、带事务处理的、安全的商业组件的规范和结构。EJB的体系结构是J2EE的基础和核心,J2EE定义了整个标准的应用开发体系结构和一个部署环境。在这个体系结构中,应用开发者的注意力集中在封装商业逻辑和商业规则上,一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服务器来处理。甚至,从属于事务、持久化、安

在水一方 708

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

EJB(RMI学习)

RMI 1.   RMI-IIOP 2.   RMI 是在java中使用remote method invocation的最初的方法,RMI使用java.rmi包 RMI-IIOP 是RMI的一个特殊版本,RMI-IIOP可以和CORBA兼容,RMI-IIOP使用java.rmi包和javax.rmi     JAF(Java活动构架) 开发者可以使用JAF来决定任意一块数据的类型、

远有青山 1267

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

EJB的约束

以下是你应该回避使用的一些Java特色,并且在你的EJB组件的实现代码中要严格限制它们的使用: 1.使用static,非final 字段。建议你在EJB组件中把所有的static字段都声明为final型的。这样可以保证前后一致的运行期语义,使得EJB容器有可以在多个Java虚拟机之间分发组件实例的灵活性。 2.使用线程同步原语来同步多个组件实例的运行。避免这个问题,你就可以使EJB容器灵活的在多个Ja

点火三周的专栏 1240

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java程序员面试题之十一

  71、简述synchronized和java.util.concurrent.locks.Lock的异同?   主要相同点:Lock能完成synchronized所实现的所有功能。   主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。 synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。  ...

炽热年华的专栏 148

程序员的英语——常见概念

文章目录【1】Polymorphism 多态【2】Inheritance 继承【3】Object-Oriented 面向对象【4】Heap 堆【5】Stack 栈【6】Implementation 实现、实施 【1】Polymorphism 多态 The fact that an object variable can refer to multiple actual types is call...

小杨的博客 354

告诉 Claude Code 在项目中遵循特定的编程模式/设计模式和技术栈约束

description: 定义本项目遵循 Jakarta EE 11 标准的三层架构:Jakarta Faces + JS/CSS(前端)、Jakarta Enterprise Beans(业务逻辑层)、Jakarta Persistence / JDBC(数据持久层)。采用无状态会话 Bean(@jakarta.ejb.Stateless)或有状态会话 Bean(@jakarta.ejb.Stateful)封装业务操作。Jakarta Faces 页面(注册表单,纯标准组件 + 原生 JS/CSS)

openeis的专栏 505

JAVA百度实习生面试题

"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。public 可以被本身和其他的包中的类引用,protected可以被同一个包内的类以及不同包中的子类引用,private只有自己的类中可以使用。

qq_61141142的博客 329

java的一些容易忽略的基础

1.简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。(15分) 2.下面程序运行会发生什么结果?如果有错误,如何改正? (15分) interface  A{   int x = 0; } class B{   int x =1; } class C     extends B implements A {   public void pX(){     Syste

For that dream 615

细节决定成败(二)

细节决定成败(二) 怎么在不使用“+”的情况下,对两个数进行相加 public int plus(int a,int b){ //两个临时变量 int aTemp = 0,bTemp = 0; while(b!=0){ aTemp = a ^ b; btemp = (a & b) << 1; a = aTemp; b = bTemp; } return a; } 那如何在不创建临时

qq_41257365的博客 325

Jdbc

jdbc 全称:Java Data Base Connection 以后我们不会直接使用JDBC,因为过于麻烦,后期工程中直接使用包装的数据库操作插件: ...

weixin_34368949的博客 104

niit考试题库计算机英语翻译,2016年NIIT认证模拟练习题

2016年NIIT认证模拟练习题B17) 考察关于JSP的异常处理的以下陈述。陈述A:当产生浏览器请求的应答时,JSP引擎捕获JSP中翻译错误。陈述B: 当JSP源文件转换为servlet时,JSP引擎捕获JSP中翻译错误。关于上面陈述,以下选项中哪个为真?1. 只有陈述A为真。2. 只有陈述B为真。3. 两个陈述A和B都为真。4. 两个陈述A和B都为假。18) 用以下代码显示变量“message...

weixin_31531599的博客 358
上一篇: 企业内部网中使用Policy文件来设置Java的安全策略
下一篇: ICEMail 3.0.5
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值