JAVA教程之开辟SessionBean
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作,session分以下几个步骤:
1创建测试web模块
2创建ideaejb模块,编写ejb
3编译,打包
4写测试页面
5公布ejb,web测试模块,测试ejb
1创建web测试模块。
在默许的user_projectsdomainsmydomainapplications目次下,新建一个名为web的文件夹。这个文件夹就是我们测试ejb的web模块。
在web文件夹下新建WEB-INF文件夹,在WEB-INF下新建lib文件夹。
在WEB-INF下新建web.xml文件,内容以下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
ok。web测试模块完成。
2创建ideaejb模块,编写ejb
翻开idea,选择file-new-ejbmodules,把modulename改成“EjbSamples”,以下图:
在服务器选项,选择weblogic,其他都按默许设置。最初点finish。
在src文件夹下新建包。包名以下:com.diegoyun.ejb.slb,以下图:
把鼠标放到模块名上,右键,选择:new-sessionBean。然后在弹出的属性框设置以下:
<ejb-name>:输出Helloworld
Package:选择/输出com.diegoyun.ejb.slb
其他信息idea会帮你主动设置,全部属性框属性以下:
点击ok停止
这时候会弹出ejb的属性设置界面,以下:
在Displayname,输出HelloworldEJB
然后切换到weblogicserver页,输出jndiname以下:ejb/session/HelloworldEJB
界面以下:
封闭这个属性页。Idea已帮你写好了ejb的设置信息。能够翻开META-INF/下的ejb-jar.xml和weblogic-ejb-jar.xml举行检察。
这时候在com.diegoyun.ejb.slb下,应当有三个文件:Helloworld,HelloworldBean和HelloworldHome
在Helloworld接口中增加一个办法以下:
publicinterfaceHelloworldextendsEJBObject{
publicStringgetGreeting(Stringname)throwsRemoteException;
}
在HelloworldBean接口中增加一个办法以下:
publicclassHelloworldBeanimplementsSessionBean{
……………
//omitothers
publicStringgetGreeting(Stringname){
return"Hello,"+name;
}
}
ok.你的Hellowordejb已写好了。
3编译,打包,公布ejb
本例接纳web体例会见ejb。而且没有把web模块和ejbjar都打包成ear。以是必需先把ejb源码编译成jar,公布这个jar,然后复制到测试web模块的lib目次下,如许web页面才干会见到bean。
本例接纳ant剧本来实行编译和打包等命令。在idea的ejbSamples模块下新建一个build.xml剧本,内容以下:
<projectname="ejb-example"default="all"basedir=".">
<!--Setyourpersonalconfigurationinformationbelow:-->
<propertyname="j2eelib"value="D:Devseaweblogic81erverlibweblogic.jar"/>
<propertyname="uploadPath"value="D:Devseauser_projectsdomainsmydomainmyserverupload"/>
<propertyname="webPath"value="D:Devseauser_projectsdomainsmydomainapplicationswebWEB-INFlib"/>
<!--Endpersonalconfinfo-->
<propertyname="source"value="src"/>
<propertyname="meta"value="META-INF"/>
<propertyname="build"value="${basedir}/build"/>
<propertyname="packinfo"value="${build}/META-INF"/>
<propertyname="dist"value="${basedir}/dist"/>
<targetname="init">
<!--Createthetimestamp-->
<tstamp/>
<mkdirdir="${build}"/>
<mkdirdir="${dist}"/>
<mkdirdir="${packinfo}"/>
</target>
<targetname="ejb">
<javacsrcdir="${source}"classpath="${j2eelib}"
destdir="${build}"includes="**/*.java"/>
</target>
<targetname="copy"depends="ejb">
<copydirsrc="${meta}"dest="${packinfo}"includes="**/*.xml"/>
</target>
<targetname="ejb-jar"depends="ejb">
<jarjarfile="${dist}/EjbSamples.jar"includes="**/*.xml,
**/*.class"basedir="${build}"/>
</target>
<!--copyjartoweblogicuploadantwebdiretory-->
<targetname="copy-to-path"depends="ejb-jar">
<copyfilesrc="${dist}/EjbSamples.jar"dest="${uploadPath}/EjbSamples.jar"forceoverwrite="true"/>
<copyfilesrc="${dist}/EjbSamples.jar"dest="${webPath}/EjbSamples.jar"forceoverwrite="true"/>
</target>
<targetname="all"depends="init,ejb,copy,ejb-jar,copy-to-path"/>
</project>
针对你本机weblogic的安装,修正剧本以下信息便可:
<!--Setyourpersonalconfigurationinformationbelow:-->
<propertyname="j2eelib"value="D:Devseaweblogic81erverlibweblogic.jar"/>
<propertyname="uploadPath"value="D:Devseauser_projectsdomainsmydomainmyserverupload"/>
<propertyname="webPath"value="D:Devseauser_projectsdomainsmydomainapplicationswebWEB-INFlib"/>
<!--Endpersonalconfinfo-->
<propertyname="j2eelib">:因为本例接纳weblogic.jar举行javac编译,以是必需晓得该jar的地位。一般,它位于<beadiretory>weblogic81erverlib下。比方,假如你的weblogic安装在C盘,那末你的jar应当云云设置:
<propertyname="j2eelib"value="C:eaweblogic81erverlibweblogic.jar"/>
<propertyname="uploadPath">:weblogic安排上传文件的目次。一般位于<beadiretory>user_projectsdomains<yourdomain><yourserver>upload文件夹下。假如你接纳的是weblogic默许安装,那末<yourdomain>一般是mydomain(由weblogic默许创立),<yourserver>一般是myserver。比方,假如你的weblogic安装在C盘,而且domain和server都接纳默许,那末属性设置以下:
<propertyname="uploadPath"value="C:eauser_projectsdomainsmydomainmyserverupload"/>
<propertyname="webPath">:web测试模块的lib目次。依照你本人本机设置举行设置。
至此,ejb的编写,设置事情全体完成。运转方才的剧本。
Antbuild.xml
然后检察web测试模块/WEB-INF/lib下是不是有ejbjar,weblogic的upload目次下是不是有ejbjar,假如没有,请按所列步骤细心反省你的设置情形。
4写测试页面举行测试
在web模块下新建hello.jsp,内容以下:
<%@pagelanguage="java"%>
<%@pageimport="com.diegoyun.ejb.slb.Helloworld,
com.diegoyun.ejb.slb.HelloworldHome,
javax.ejb.*,
java.math.*,
javax.naming.*,
javax.rmi.PortableRemoteObject,
java.rmi.RemoteException"%>
<html>
<head>
<title>hello</title>
</head>
<bodybgcolor="white">
<h1><b><center>StatelessBeanExamples</center></b></h1>
<hr>
<formname="frm"method="post"action="hello.jsp">
<inputtype="text"value="Diego"name="myname"/>
<inputtype="submit"value="Submit"/>
</form>
<p>
<p>See:</p>
<br>
<%
Helloworldhello=null;
Stringname=null;
name=request.getParameter("myname");
if(name!=null&&!"".equals(name)){
try{
InitialContextic=newInitialContext();
ObjectobjRef=ic.lookup("ejb/session/HelloworldEJB");
HelloworldHomehome=(HelloworldHome)PortableRemoteObject.narrow(objRef,HelloworldHome.class);
hello=home.create();
}catch(RemoteExceptionex){
System.out.println("Couldntcreatehellobean."+ex.getMessage());
}catch(CreateExceptionex){
System.out.println("Couldntcreatehellobean."+ex.getMessage());
}catch(NamingExceptionex){
System.out.println("Unabletolookuphome:"+"HelloworldHome"+ex.getMessage());
}
}
if(hello!=null&&!"".equals(hello)){
Strings=hello.getGreeting(name);
out.print(s);
}
%>
</body>
</html>
5公布ejb,web测试模块,调试ejb
公布ejb。启动weblogicserver,翻开把持台。
然后在ejb公布页面,选择upload文件夹下的jar举行公布,默许路径应是:<beadiretory>user_projectsdomainsmydomainmyserverupload
公布web模块
在deploywebapplicationmodules下,定位到<beadiretory>user_projectsdomainsmydomainapplications下,能够看到我们创建的web模块。点“TargetModule”举行公布,name取名为“web”
ok。一切事情均已完成!
翻开扫瞄器,输出:http://localhost:7001/web/hello.jsp
点submit,就能够看到hello字样。
FAQ:
1为何在打包ejb以后,把ejbcopy到weblogic的upload目次下?(这个历程是由build.xml剧本完成的)
答:一样平常情形下假如你修正了ejb,那末你就要在weblogic把持台从头deployejb的jar。常常举行这项事情是很烦人的。幸亏weblogic供应了upload的特征,你把jar上传到weblogic,然后deployupload文件夹里的这个jar。今后每次在你修正ejb,打包成jar以后,你用新的jar掩盖upload目次下的jar,就不必从头deployjar了。经由过程这类体例摹拟了jboss的热部署特征。
其他模块,比方war,ear,都能够经由过程这类体例来deploy。
不得不提一下的是:.net是看到java红,而开发出来的工具。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 Java 编程语言的风格十分接近C、C++语言。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种将安全性(Security)列为第一优先考虑的语言
页:
[1]
2