仓酷云
标题:
JAVA网页编程之J2EE编程起步仓酷云
[打印本页]
作者:
老尸
时间:
2015-1-18 11:37
标题:
JAVA网页编程之J2EE编程起步仓酷云
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉, 本文经由过程复杂例子,形貌怎样使用EJB开辟、部署和运转一个客户机/服务器使用。例子的客户端作为Java自力使用运转,由ConverterClient.java类完成。它完成一个复杂的及时会话,次要经由过程客户端使用挪用服务器端EJB类ConverterEJB.java来完成。假如你已安装了J2EE,则能够在doc/guides/ejb/examples/converter目次中找到这些例子。
为了完成本文所形貌的复杂例子,你必要完成以下义务:
·编写和编译EJB程序
·创立J2EE使用
·打包EJB(.jar)
·部署J2EE使用
·编写和编译客户端程序
·运转客户端
上面章节我们迁就上述事情义务和所触及的常识点举行复杂论述。
条件
完成本文供应例子的条件是您安装了Javasoft.com或相干操纵体系厂商网站下载的J2SESDK,和安装了响应操纵体系版本的J2EESDK(www.javasoft.com下载)并举行了准确设置。关于J2SE和J2EE的安装、设置和别的进一步信息,请参阅产物相干文档。
EJB编码
每一个EJB程序必需请求编写下述代码:
·远程接口(Remoteinterface)
·当地接口(Homeinterface)
·完成组件(Enterprisebeanclass)
远程接口编码
远程接口界说了客户端可以挪用的贸易办法,这些贸易办法是有服务器真个企业组件完成的,本文所触及的Converter.java编码以下:
importjavax.ejb.EJBObject;//引进必需的包
importjava.rmi.RemoteException;
publicinterfaceConverterextendsEJBObject{//必需承继EJBObject类
/*界说客户端能够挪用的办法*/
publicdoubledollarToYen(doubledollars)throwsRemoteException;
publicdoubleyenToEuro(doubleyen)throwsRemoteException;
}
当地接口编码
当地接口界说了员徐客户端创立、查找或挪动EJB的办法,本文所触及的当地接口类ConverterHome接口只界说了一个create办法,前往远程接口范例,编码以下:
importjava.io.Serializable;
importjava.rmi.RemoteException;
importjavax.ejb.CreateException;
importjavax.ejb.EJBHome;
publicinterfaceConverterHomeextendsEJBHome{
Convertercreate()throwsRemoteException,CreateException;
}
企业组件类(EJB)编码
本文中的企业组件(EJB)是一个无形态会话组件,定名为ConverterEJB.java,该组件完成了两个贸易办法:dollarToYen和yenToEuro,与远程接口Converter所界说客户端可会见办法分歧,该类编码以下:
importjava.rmi.RemoteException;
importjavax.ejb.SessionBean;
importjavax.ejb.SessionContext;
publicclassConverterEJBimplementsSessionBean{
publicdoubledollarToYen(doubledollars){
returndollars*121.6000;
}
publicdoubleyenToEuro(doubleyen){
returnyen*0.0077;
}
publicConverterEJB(){}
publicvoidejbCreate(){}
publicvoidejbRemove(){}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidsetSessionContext(SessionContextsc){}
}
编译EJB
如今必要对上述三个类举行编译,在UNIX平台和NT/9X平台上的编译略有区分,分离以下编译:
UNIX:
1.鄙人面的剧本compileEJB.sh中,将该成实践J2EE安装目次。
#!/bin/sh
J2EE_HOME=
CPATH=.:$J2EE_HOME/lib/j2ee.jar
javac-classpath"$CPATH"ConverterEJB.javaConverterHome.javaConverter.java
2.运转compileEJB.sh剧本
Windows:
1.鄙人面的compileEJB.bat批处置文件中,将该为实践J2EE安装目次。
setJ2EE_HOME=
setCPATH=.;%J2EE_HOME%libj2ee.jar
javac-classpath%CPATH%ConverterEJB.javaConverterHome.javaConverter.java
2.运转批处置文件compileEJB.bat。
创立J2EE使用
你不克不及够间接将企业组件(EJB)部署到J2EE服务器,必需将组件加到一个J2EE使用中然后再部署。在本节,你将创立一个叫做ConverterApp的新J2EE使用并保留为ConverterApp.ear。
1.在命令行提醒符下启动J2EE服务器:
j2ee?verbose
(中断服务器命令j2ee-stop.)
2.在另外一个终端窗口运转部署工具:
deploytool
(按F1猎取部署工具匡助)
3.创立新的J2EE使用
a.在部署工具当选择“文件”菜单
b.从“文件”菜单当选择“新使用”
c.点击扫瞄
d.在文件选择框中定位寄存.ear文件的目次
e.文件定名为ConverterApp.ear.
f.点击“新使用”
g.点击“断定”
企业组件(EJB)打包
本部分你将运转部署工具的创立EJB导游来完成下述义务:
·创立组件部署形貌符
·将形貌符和组件类打包为.jar文件
·将EJB.jar文件打包到J2EE使用ConverterApp.ear文件
从“文件”菜单当选择创立EJB来入手下手创立新的EJB,这个导游将显现上面的对话框:
先容对话框:
a.浏览导游特征申明文档
b.点击“下一步”
EJBJAR对话框:
a.在标有"EnterpriseBeanwillgoin,"的组合框当选择ConverterApp.
b.在JARDisplayName域输出ConverterJAR,声明EJB.jar文件包括该组件,该名字会在树形使用布局中出现。
c.点击增添内容文本域
d.在内容编纂对话框顶部,输出包括.class文件的目次
e.选择该目次下相干.class到场:Converter.class,ConverterEJB.class,和ConverterHome.class.
f.点击断定
g.点击下一步
综合对话框:
a.在组件范例当选择“会话”
b.选择“无形态”
b.在EJB类组合框当选择ConverterEJB.
c.在当地接口组合框当选择ConverterHome.
d.在远程接口组合框当选择Converter.
e.在企业组件定名域中输出ConverterBean.
f.点击下一步
情况出口对话框:
由于你能够跳事后面的对话框,以是能够点击完成停止创立EJB使用义务。
部署J2EE使用
如今J2EE使用中已包括企业组件(EJB)了,能够对其举行部署。
1.指定企业组件的JNDI名字
a.在使用部署波农工具中,在使用树形布局当选择ConverterApp
b.选择JNDI名字标签
c.在JNDI名字域中,输出MyConverter并确认。客户端将利用该名字来定位当地接口。
2.部署J2EE使用
a.从工具菜单当选择“部署”
b.在第一个对话框当选择ConverterApp为部署对象,Localhost为方针服务器
c.选择标有"ReturnClientJar."的选择框
d.在文本域中敲进ConverterAppClient.jar切实其实切目次,如J2EE的例子目次doc/guides/ejb/examples/converter
e.点击下一步
f.在第二个对话框中,核实ConverterBean的JNDI定名为MyConverter.
g.点击下一步
h.在第三个对话框中点击停止
i.在部署历程对话框中,点击OK完成部署
开辟客户端
客户端程序ConverterClient是一个自力运转的Java使用,创立ConverterClient次要包含以下步骤:
1.客户端编码
2.客户端编译
客户端编码
ConverterClient.java源码展现了EJB客户端最基础的义务完成,即:
·定位当地接口
·创立企业组件(EJB)
·挪用贸易办法
定位当地接口
ConverterHome接口界说了EJB声明周期办法如create,在中ConverterClient能够挪用create办法之前ConverterHome对象必需被实例化,包含三个步骤:
1.创立JNDI定名高低文
Contextinitial=newInitialContext();
2.查找与JNDI定名MyConverter绑定的对象
java.lang.Objectobjref=initial.lookup("MyConverter");
3.限制指向ConverterHome对象的参考
ConverterHomehome=
(ConverterHome)PortableRemoteObject.narrow(objref,
ConverterHome.class);
创立企业组件(EJB)实例
客户端经由过程挪用当地接口ConvertHome对象的create办法创立ConverterEJB类对象,create办法前往组件Converter范例的对象。然后,远程办法界说的在ConverterEJB完成的贸易办法能够被客户端挪用。当客户端挪用create办法时,EJB容器将实例化ConverterEJB,然后挪用ConverterEJB.ejbCreate办法。
ConvertercurrencyConverter=home.create();
挪用贸易办法
完成上述义务后,挪用贸易办法就对照复杂了。你挪用Converter对象的办法,EJB容器将响应的挪用运转在J2EE服务器中的ConverterEJB实例的办法。客户端挪用贸易办法dollarToYen的代码以下:
doubleamount=currencyConverter.dollarToYen(100.00);
ConverterClient源码
上面是ConverterClient.java的完全源码:
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.rmi.PortableRemoteObject;
importConverter;
importConverterHome;
publicclassConverterClient{
publicstaticvoidmain(String[]args){
try{
Contextinitial=newInitialContext();
Objectobjref=initial.lookup("MyConverter");
ConverterHomehome=
(ConverterHome)PortableRemoteObject.narrow(objref,
ConverterHome.class);
ConvertercurrencyConverter=home.create();
doubleamount=currencyConverter.dollarToYen(100.00);
System.out.println(String.valueOf(amount));
amount=currencyConverter.yenToEuro(100.00);
System.out.println(String.valueOf(amount));
currencyConverter.remove();
}catch(Exceptionex){
System.err.println("Caughtanunexpectedexception!");
ex.printStackTrace();
}
}
}
编译客户端代码
UNIX:
1.鄙人面剧本compileClient.sh,对依据J2EE实践安装目次作响应修改。
#!/bin/sh
J2EE_HOME=
CPATH=.:$J2EE_HOME/lib/j2ee.jar
javac-classpath"$CPATH"ConverterClient.java
2.运转剧本文件compileClient.sh
Windows:
1.鄙人面批处置文件compileClient.bat中,对依据实践J2EE安装目次举行修正。
setJ2EE_HOME=
setCPATH=.;%J2EE_HOME%libj2ee.jar
javac-classpath%CPATH%ConverterClient.java
2.运转批处置文件compileClient.bat
运转客户端
运转客户端你必要ConverterAppClient.jar文件,该文件包括同意客户端与EJB容器中EJB实例通讯所需的存根类,ConverterAppClient.jar文件在部署J2EE使用过程当中创立。
UNIX:
1.鄙人面剧本testClient.sh,对依据J2EE实践安装目次作响应修改。
#!/bin/sh
J2EE_HOME=
CPATH=$J2EE_HOME/lib/j2ee.jar:ConverterAppClient.jar:.
java-classpath"$CPATH"ConverterClient
2.运转剧本文件testClient.sh
Windows:
1.鄙人面批处置文件testClient.bat中,对依据实践J2EE安装目次举行修正。
setJ2EE_HOME=
setCPATH=.;%J2EE_HOME%libj2ee.jar;ConverterAppClient.jar
java-classpath"%CPATH%"ConverterClient
2.运转批处置文件testClient.bat
罕见成绩处置
当运转ConverterClient时发明上面毛病:
1.java.lang.ClassCastException
大概没法找到ConverterAppClient.jar文件。
2.java.lang.NoClassDefFoundError:ConverterClient
没法定位ConverterClient.class文件。
3.java.lang.NoClassDefFoundError:javax/naming/Context
没法找到所需的j2ee.jar文件,确认CLASSPATH设置。
4.javax.naming.NameNotFoundException:LookupofnameMyConverterfailed.
J2EE服务器没法定位JNDI名字MyConverter所绑定的组件。
5.javax.naming.NamingException:Erroraccessingrepository:CannotconnecttoORBat....
J2EE服务器没有运转。
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发
作者:
简单生活
时间:
2015-1-21 11:13
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者:
柔情似水
时间:
2015-1-29 14:34
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者:
变相怪杰
时间:
2015-1-30 22:56
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者:
再现理想
时间:
2015-2-3 13:07
是一种使用者不需花费很多时间学习的语言
作者:
老尸
时间:
2015-2-6 08:01
是一种突破用户端机器环境和CPU
作者:
小魔女
时间:
2015-2-10 04:45
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者:
因胸联盟
时间:
2015-2-28 19:57
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
小女巫
时间:
2015-3-7 14:34
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者:
乐观
时间:
2015-3-13 01:07
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
飘灵儿
时间:
2015-3-13 05:05
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者:
仓酷云
时间:
2015-3-13 09:08
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者:
若天明
时间:
2015-3-20 17:44
是一种使用者不需花费很多时间学习的语言
作者:
活着的死人
时间:
2015-3-25 07:31
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
若相依
时间:
2015-3-30 19:23
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者:
海妖
时间:
2015-4-5 14:39
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
再见西城
时间:
2015-4-11 00:27
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者:
灵魂腐蚀
时间:
2015-4-15 00:46
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者:
愤怒的大鸟
时间:
2015-4-16 01:25
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2