仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1756|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网站制作之Jboss Ejb3.0 Interceptor

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:52:29 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。






Interceptor为拦阻器,能够监听程序的全部程序或办法。从多个程序了解成绩常常对照简单,我就在本人写的HelloWorld程序的基本上增添了Interceptor.



有以下几个程序:Hello.java,HelloLocal.java,HelloRemote.java,HelloBean.java,TracingInterceptor.java



Client.java



重点在HelloBean.java,TracingInterceptor.java这两个程序。















Hello.java



/**



*@authorroson



*



*2005-4-10



*/



packageorg.jboss.tutorial.stateless.bean;







publicinterfaceHello{



publicvoidhello();



publicStringhello2();



}















HelloLocal.java



/**



*@authorroson



*



*2005-4-10



*/



packageorg.jboss.tutorial.stateless.bean;







importjavax.ejb.Local;







@Local



publicinterfaceHelloLocalextendsHello{







}















HelloRemote.java



/**



*@authorroson



*



*2005-4-10



*/



packageorg.jboss.tutorial.stateless.bean;







importjavax.ejb.Remote;







@Remote



publicinterfaceHelloRemoteextendsHello{







}















HelloBean.java



/**



*@authorroson



*



*2005-4-10



*/



packageorg.jboss.tutorial.stateless.bean;







importjavax.ejb.InvocationContext;



importjavax.ejb.Stateless;



importjavax.ejb.AroundInvoke;



importjavax.ejb.Interceptor;







@Stateless



@Interceptor("org.jboss.tutorial.stateless.bean.TracingInterceptor")



publicclassHelloBeanimplementsHelloRemote,HelloLocal{



publicvoidhello()



{



System.out.println("Helloroson");



}







publicStringhello2()



{



return"areyouok";



}







@AroundInvoke



publicObjectmyBeanInterceptor(InvocationContextctx)throwsException



{



if(ctx.getMethod().getName().equals("hello"))



{



System.out.println("***hello:");



}



if(ctx.getMethod().getName().equals("hello2"))



{



System.out.println("***hello2:");



}



returnctx.proceed();



}



}







申明:



@Interceptor("org.jboss.tutorial.stateless.bean.TracingInterceptor")界说了一个本人界说的Interceptor。



也能够有多个Interceptor格局以下



@Interceptors({"org.jboss.TracingInterceptor","org.jboss..OtherInterceptor"})



以上两种监督全部class的情形,要做的更细点就是独自监督拦阻每一个办法,必要别的写个办法:



@AroundInvoke



publicObject办法名能够恣意(InvocationContextctx)throwsException



{



}















TracingInterceptor.java



packageorg.jboss.tutorial.stateless.bean;







importjavax.ejb.AroundInvoke;



importjavax.ejb.InvocationContext;







publicclassTracingInterceptor{







@AroundInvoke



publicObjectlog(InvocationContextctx)throwsException



{



System.out.println("***TracingInterceptorintercepting");



longstart=System.currentTimeMillis();



try



{



returnctx.proceed();



}



catch(Exceptione)



{



throwe;



}



finally



{



longtime=System.currentTimeMillis()-start;



Stringmethod=ctx.getBean().getClass().getName()+"."+ctx.getMethod().getName()+"()";



System.out.println("***TracingInterceptorinvocationof"+method+"took"+time+"ms");



}



}



}







这是在jboss-EJB-3.0_Preview_5.zip中的一个Interceptor,能够参照这个Interceptor写噢。



















Client.java



packageorg.jboss.tutorial.stateless.client;







importorg.jboss.tutorial.stateless.bean.Calculator;



importorg.jboss.tutorial.stateless.bean.Hello;



importorg.jboss.tutorial.stateless.bean.HelloRemote;



importjavax.naming.InitialContext;







publicclassClient



{



publicstaticvoidmain(String[]args)throwsException



{



InitialContextctx=newInitialContext();



Hellohello=(Hello)ctx.lookup(HelloRemote.class.getName());



hello.hello();



System.out.println(hello.hello2());



}



}







在客户端程序里竟然毫无Interceptor的踪影,呵呵。这里必要指出的是hello,hello2办法输入的中央是分歧的,一个在buildant的窗口,另外一个是在jboss运转窗口。















这里附上log4j.properties在jboss-EJB-3.0_Preview_5.zip 内里没有这个总是显现短少appender。有了这个将在该目次下天生个record.log日记文件。







log4j.properties



log4j.appender.R=org.apache.log4j.RollingFileAppender



log4j.appender.R.File=record.log



log4j.appender.R.layout=org.apache.log4j.PatternLayout



log4j.appender.R.layout.ConversionPattern=%p%d{hh:mm:ss}%t%c{1}-%m%n



log4j.appender.R.MaxBackupIndex=1



log4j.appender.R.MaxFileSize=100KB



log4j.appender.stdout.layout=org.apache.log4j.PatternLayout



log4j.appender.stdout.layout.ConversionPattern=%5p[%t](%F:%L)-%m%n



log4j.appender.stdout=org.apache.log4j.ConsoleAppender



log4j.rootLogger=stdout,R















运转:参考installing.html



要运转这个程序能够把它与jboss-EJB-3.0_Preview_5.zip里的相分离,变动下build.xml文件里的targetrun就好了.



Windows下



翻开命令提醒符cmd,到jboss_home/bin



Run.bat–call



用ant



先build后run就好了。











会商:



在良多中央能够看到Interceptor的身影,我开始是在aop那边见到的。jboss-EJB-3.0_Preview_5.zip内里的Interceptor的例子多是为了却合后面所学的,把一些常识综合起来了。也不是很难了解,这里我只是把它分化了,更简单观察和把握。







其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:
乐观 该用户已被删除
沙发
 楼主| 发表于 2015-3-25 13:45:11 | 显示全部楼层
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-5 21:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表