动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.几个实用的Servlet应用例子-入门.
.轻量级IoC容器来扩展ANT享受SPRI.
.具有邮编区号查询功能的js+xml版.
.Java基础知识:简单Hibernate入门.
.分布式对话服务器的管理.
.Digester 解析 XML 文档 Sample.
.Hibernate的一对一关系.
.解析Java的多线程机制(1).
.2006 IDE,谁将掀起风暴?.
.JavaBean的属性.
.简单的JDBC应用程序for Java DB.
.设计心得——用 XDoclet 减少代码.
.JBoss Eclipse IDE&nb.
.文件下载程序中文件名过长的问题.
.线程控制动画.
.java指南之使用图形:自定义绘图.
.用Java连接MSSQLServer.
.封装JNDI操作LDAP服务器的工具类.
.Java 图形用户界面设计(上).
.教你学会XML Web Service 的基础.

Turbine HowTo 之 Service

发表日期:2008-1-5 |



  在Turbine中实现自己的服务是非常轻易的一件事.你的类只需要继续org.apache.turbine.services.TurbineBaseService(这是必须的,只有这样,Turbine的ServiceBroker才能启动你的服务).
  
  要告诉Turbine你的这个服务,你必需在TrubineResources.properties里这样配置:
  
  services.MyServiceName.classname = full.class.name.of.your.service
  
  配置好以后,当有程序请求这个服务的时候,Turbine会初始化这个服务.必须说明的是,你的服务并不是在Turbine启动的时候初始化的.这叫"lazy init",假如你需要你的服务在Turbine启动是就初始化,你必须在TurbineResources.properties里添加另一条配置:
  
  services.MyServiceName.earlyInit = true
  
  假如你查看一下db/TurbinePoolBrokerService或者servlet/TurbineServletService这两个简单的示例的话,你上手会更快一点.
  
  In a Nutshell
  
  * 你不能试着提供带参数的构造函数,最好是不提供构造函数,因为在类构造时不需要做任何事情(我们只需要默认的构造函数就好了).
  
  * 你的服务只能初始化一次.因此,你的类必须是线程安全的(threadsafe),不能使用类级的变量来处理Session级的请求.
  
  * 你需要提供一个"init()"方法,Turbine会在第一次请求的时候调用他(假如earlyInit=true,则是在Turbine启动时)并且初始化你的服务相关的内容.令人迷惑的是"init()"方法到底应该是什么样的?因为Turbine使用不同的方法来进行服务的初始化.不过,从 Turbine2.2开始,你只需要提供一个不带参数的方法就可以了:
  
  public void init() throws InitializationException
  {
  }
  * 假如正常初始化结束来,你必须调用"setInit(true)",否则你的服务仍然不能响应任何的用户请求.当你这么设置以后,你的服务服务就有可能被调用,所以你就不能再次调用"setInit()"了.
  
  * 你可以提供一个"shutdown()"方法,Turbine会在自己关闭之前调用他.你可以在这里清理你服务的一些内部数据,在执行完"shutdown()"之前,你应该调用"setInit(false)".
  
  一般的模式
  假如你要实现一个FooService,声明一个继续org.apache.turbine.services.Service的接口 (your.package.FooService)是一个好习惯.这个接口应该提供一个叫SERVICE_NAME的常量,这是你的服务的名字,比如:
  [code]
  package your.package;
  
  import org.apache.turbine.services.Service;
  
  public interface FooService extends Service
  {
  /**
  * 服务的标记,应该是唯一的,以区分开别的服务
  */
  public String SERVICE_NAME = "FooService";
  
  [...]
  
  }
  [/code]
  your.package.TurbineFooService.Java 继续了org.apache.turbine.services.TurbineBaseService类并且实现your.package.FooService并提供来具体的实现 ,如:
  [code]
  package your.package;
  
  import org.apache.turbine.services.TurbineBaseService;
  
  public class TurbineFooService
  extends TurbineBaseService
  implements FooService
  {
  /**
  * 在这里提供具体的实现
  */
  [...]
  
  }
  [/code]
  your.package.TurbineFoo.java 提供一些静态的facade方法来调用你的服务,如:
  
  [code]
  import org.apache.turbine.services.TurbineServices;
  
  public class TurbineFoo
  {
  protected static FooService getService()
  {
  return (FooService) TurbineServices
  .getInstance().getService(FooService.SERVICE_NAME);
  }
  
  [...]
  
  public static void fooMethod1()
  {
  getService().fooMethod1();
  }
  
  public static int fooMethod2(int bar)
  {
  return getService().fooMethod2(bar);
  }
  
  [...]
  
  }
  [/code]
  用户调用你的服务只需要简单的"TurbineFoo.fooMethod1();",在调用的代码里就不需要知道具体实现的类是哪一个.
  
  注重:在Turbine2.1和2.2中治理服务的生命周期(lifecycle)的init()和shutdown()方法可能在以后的版本中有所改变的.
上一篇:html-Cancel标签应用注意事项篇 人气:641
下一篇:使用工作流引擎Wfmopen中的陷井 人气:376
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵