乐观 发表于 2015-1-18 11:44:57

JAVA编程:EJB之无形态会话Bean复杂使用-进修与实...

你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。客户经由过程由EJB容器供应的远程和当地接口举行通讯
•会见把持表是用于包管平安其受权能会见特定功效的用户组或团体表。
•耐久性是指对象形态永世地存储在数据存储器中,诸如数据库。
•企业beans的范例:
C实体(Entity)beans
实体beans撑持多个会话和多个客户,可分为:
Bean-办理Bean耐久性
Container-办理容器的耐久性
C会话(Session)beans
会话beans实行营业义务时没有存储机制,可分为:
有形态会话(Statefulsession)bean
无形态会话(Statelesssession)bean

本例以我所学的内容为例:

Earnestbank请求开辟一个美圆和卢比转换的盘算器构件。申明利用EJB来创立此构件是有事理的并申明必需写的代码。


一.辨认机制
二.断定企业bean的范例
三.编写远程接口代码
四.编写当地接口代码
五.编写企业bean类代码
六.编译源文件

一.辨认机制
EJB是符合的手艺,由于:
EJB构件主动处置体系级服务
企业bean只完成营业逻辑

二.断定企业bean的范例
银行使用的盘算器构件不请求耐久的存储机制
泉币的等值转换,这类值不在其他中央利用
因而,最合适于创立无形态的会话bean

三.编写远程接口代码
远程接口界说企业bean的一切营业办法,不包含体系级的操纵办法。这些营业办法在EJB类中完成。

写远程接口的步骤:
必要javax.ejb.EJBObject和java.rmi.RemoteException接口
创建由扩大EJBObject接口的远程接口
在EJB类中完成一切在远程接口界说的营业办法。
依据本成绩的报告,可写出以下远程接口程序:
importjavax.ejb.EJBObject;
importjava.rmi.RemoteException;
publicinterfaceCalculatorextendsEJBObject
{publicdoubledollarToRs(doubledollars)
throwsRemoteException;
}
四.编写当地接口代码
当地接口代码界说了同意EJB客户创建且查找EJB构件的办法。编写当地接口的步骤以下:
必要java.io.Serializable、java.rmi.RemoteException、javax.ejb.CreateException、javax.ejb.EJBHome接口
创建由扩大EJBHome接口的当地接口
界说create()办法往创建特定的EJB类的一个实例,该办法的前往范例必需是EJB的远程接口对象。

importjava.io.Serializable;
importjava.rmi.RemoteException;
importjavax.ejb.CreateException;
importjavax.ejb.EJBHome;
publicinterfaceCalculatorHomeextendsEJBHome
{Calculatorcreate()throwsRemoteException,CreateException;}

五.编写企业bean类代码
完成一切在远程接口中申明的营业办法。编写EJB类的步骤:
必要java.rmi.RemoteException、javax.ejb.SessionBean、javax.ejb.SessionContext接口
创建EJB类完成SessionBean接口
完成在远程接口中界说的营业办法。
编写ejbCreate()、ejbRemove()、ejbActivate()、ejbPassivate()、setSessionContext()和对缺省的机关器办法的完成。
注重:EJB类中完成的办法名及其特性必需和远程办法中声明的相分歧。
依据成绩的报告和前边的形貌,可创立以下EJB代码程序。

EJB代码
importjava.rmi.RemoteException;
importjavax.ejb.SessionBean;
importjavax.ejb.SessionContext;
publicclassCalculatorEJBimplementsSessionBean
{publicdoubledollarToRs(doubledollars)
{returndollars*47.20;}
publicCalculatorEJB(){}
publicvoidejbCreate(){}
publicvoidejbRemove(){}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidsetSessionContext(SessionContextsc){}
}
六.编译源文件


以下为原代码
远程接口程序:
/*
@InberGong
Date2004/9/8
Filename:Calculator.java
*/

importjavax.ejb.EJBObject;
importjava.rmi.RemoteException;


publicinterfaceCalculatorextendsEJBObject
{
publicdoubledollarToRs(doubledollars)throwsRemoteException;
publicdoublersToDollar(doublers)throwsRemoteException;
publicdoublermbToDollar(doublermb)throwsRemoteException;
publicdoubledollarToRMB(doubledollars)throwsRemoteException;
}
当地接口程序以下:
/*
@InberGong
Date2004/9/8
Filename:CalculatorHome.java
*/

importjava.io.*;
importjava.rmi.*;
importjavax.ejb.*;


publicinterfaceCalculatorHomeextendsEJBHome
{
Calculatorcreate()throwsCreateException,RemoteException;
}
企业bean类代码

/*
@InberGong
Date2004/9/8
Filename:CalculatorEJB.java
*/
importjava.rmi.*;
importjavax.ejb.*;

publicclassCalculatorEJBimplementsSessionBean
{

publicdoubledollarToRs(doubledollars)throwsRemoteException
{
returndollars*47.20;
}


publicdoublersToDollar(doublers)throwsRemoteException
{
returnrs/47.20;
}
publicdoublermbToDollar(doublermb)throwsRemoteException{
returnrmb/9;
}
publicdoubledollarToRMB(doubledollars)throwsRemoteException
{
returndollars*9;
}

publicvoidejbCreate()throwsCreateException,RemoteException
{
System.out.println("ejbCreate()");
}
publicCalculatorEJB()
{
System.out.println("CalculatorEJB()");
}
publicvoidsetSessionContext(SessionContextsc)
{
System.out.println("setSessionContext()");
}
publicvoidejbRemove()
{
System.out.println("ejbRemove()");
}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}



}

最初是客户端程序
/*
@InberGong
Date2004/9/8
Filename:CalculatorClient.java
*/

importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.naming.*;
importjavax.rmi.*;

publicclassCalculatorClientextendsJFrame
{
publicstaticintw=500;
publicstaticinth=95;
publicstaticStringstr="EarnestBankWelcomesYou";
Containerc;
JLabell,result;
JTextFieldt;
JButtonb;
publicstaticStringvalue;
publicstaticdoubledbl;
publicstaticdoubleamt;
publicCalculatorClient()
{
super(str);
c=getContentPane();
c.setLayout(newGridLayout(2,2,2,2));
l=newJLabel("EntertheamountinDollars($)");
c.add(l);
t=newJTextField(10);
c.add(t);
b=newJButton("Calculate");
c.add(b);
result=newJLabel();
c.add(result);
b.addActionListener(newaddEvent());
setSize(w,h);
show();
}
classaddEventimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
value=t.getText();
dbl=Double.parseDouble(value);
try{
Contextic=newInitialContext();
Objectobj=ic.lookup("CalculatorJNDI");//JNDIname
CalculatorHomehome=(CalculatorHome)PortableRemoteObject.narrow(obj,CalculatorHome.class);
Calculatorcalc=home.create();
amt=calc.dollarToRs(dbl);
calc.remove();

Calculatorcalc2=home.create();
if(calc2.isIdentical(calc))
{
System.out.println("两个桩实例指向统一个远程HOME实例!");
}
else
{System.out.println("没有指向统一个远程HOME实例!");
}
result.setText("Result(RS.)"+String.valueOf(amt));


}
catch(Exceptiont)
{
System.out.println(t);
}
}
}
publicstaticvoidmain(Stringargs[])
{
newCalculatorClient();
}

}

入手下手设置
这里用的是j2ee1.3

运转j2ee
startj2ee-verbose

deploytool

new->application
applicatonfilename:E:public_htmlpublic_javaap2ap2.ear
applicatondisplyname:ap2.ear
new->EterpriseBean
Contents内里到场
Calculator.class CalculatorHome.class CalculatorEJB.class 三个文件
->NEXT
呈现下对话框:NewEnterpriseBeanWizard-General
在BeanType当选择Session->Stateless
在EnterpriseBeanCalss当选择CalculatorEJB
在当地接口当选择CalculatorHome在RemoteInterface当选择Calculator
->NEXT->NEXT->NEXT->NEXT->NEXT->NEXT->NEXT->Finish
点左视窗中的使用ap2后 ->Tools->Deploy..->选中复框ReturnClientJar
->NEXT
呈现 Deployap2-JNDINames对话框
在Application的JNDIName中输出客户端程序中要查找的JNDI名:CalculatorJNDI 
->NEXT->Finished........->ok

在 dos窗口中进进到程序的根目次到场jar包
setclasspath=%classpath%;ap2Client.jar
javaCalculatorClient


ruby里有这些工具吗?又要简单多少?我没有用过这两门语言,我估计在这些语言力没有很统一的这种标准,或者根本就没有提供。

飘灵儿 发表于 2015-1-20 19:58:35

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

再见西城 发表于 2015-1-24 19:44:08

Java 编程语言的风格十分接近C、C++语言。

admin 发表于 2015-2-2 12:43:25

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

不帅 发表于 2015-2-5 15:19:00

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

兰色精灵 发表于 2015-2-12 11:40:11

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

若天明 发表于 2015-3-3 02:28:48

是一种语言,用以产生「小应用程序(Applet(s))

再现理想 发表于 2015-3-7 05:44:45

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

小魔女 发表于 2015-3-10 16:28:55

是一种为 Internet发展的计算机语言

山那边是海 发表于 2015-3-11 09:01:40

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

第二个灵魂 发表于 2015-3-12 02:48:25

是一种突破用户端机器环境和CPU

莫相离 发表于 2015-3-19 17:38:10

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

精灵巫婆 发表于 2015-3-22 05:10:29

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

金色的骷髅 发表于 2015-3-23 15:17:59

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

爱飞 发表于 2015-4-1 11:06:41

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

只想知道 发表于 2015-4-5 15:09:57

设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧

蒙在股里 发表于 2015-4-22 07:13:39

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

深爱那片海 发表于 2015-4-26 12:31:15

是一种突破用户端机器环境和CPU

分手快乐 发表于 2015-5-7 19:31:00

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

小妖女 发表于 2015-6-11 19:08:37

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
页: [1] 2
查看完整版本: JAVA编程:EJB之无形态会话Bean复杂使用-进修与实...