分享
 
 
 

在resin-ee-2.1.5上构建j2ee应用服务

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

在resin-ee-2.1.5上构建j2ee应用服务

(100101)北京信息工程学院 蔡君 www.justhis.com

----如果要转载请注明来处和作者

一、所需软件

1.JDK

因为resin自己不带j2sdk,所以必须在安装resin之前要安装j2sdk,这样的话,我们可以使用任何版本的j2sdk, 与有些AppServer相比较,省去了千方百计修改jdk的苦恼。

Sun公司相关下载连接

http://Java.sun.com/j2se/downloads.Html

2.resin-ee

caUCho公司的resin虽然现在没有多少人知晓,但是他的调试能力,他的执行速度实在让人惊叹,caucho 公司的resin对jsp、servlet的解析能力更是略胜一筹,国内许多大型网站都采用了resin的服务器(尽管许多 开发人员并未使用),象:http://www.163.com http://www.chinaren.com http://www.justhis.com.

resin-ee经过几次修订之后,已经越来越稳定了,他的CMP(容器管理)更是显示出强大的威力,可配置性、即使更新的功能更是让人瞠目结舌。

caucho相关下载

http://www.caucho.com/download/

PS:本人系统环境为win2kServerSP3+j2sdk1.4+resin-ee-2.1.5

二、构建环境

1、在Resin的目录下发布

在resin.conf中查找<web-app>标签,该标签表示一个web应用。

标签中,id属性表示该应用的Web路径。如<web-app id=’/test’>,表示该应用在Web上访问的时候应该用http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如<app-dir>d: esindoc est</app-dir>表示该应用在d: esindoc est目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page:404错误也就是文件找不到错误页;Exception违例页;不能连接java引擎页。他们分别可以这样子设置。

404文件找不到页

<web-app id=′/app1′>

<error-page error-code=′404′ location=′/file_not_found.jsp′/>

</web-app>

Exception 违例页

<web-app id=′/foo′>

<error-page exception-type=′java.lang.NullPointerException′

location=′/nullpointer.jsp′/>

</web-app>

不能连接到srun Servlet引擎错误页

该页设置和应用无关,属于服务器的设置。

<http-server>

<error-page exception-type=′connection′

location=′/missing_file.html′/>

</http-server>

classpath的设置

参见下面的语句:

<classpath id=′WEB-INF/classes′ source=′WEB-INF/src′ compile=′true′/>

id参数的值表示classpath中编译后的classpath的存放路径;source参数的值表示classpath中java源代码的存放路径;compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。Servlet相同。

Servlet的设置

参见下面的语句:

<servlet-mapping url-pattern=′*.xtp′ servlet-name=′xtp′/>

<servlet-mapping url-pattern=′*.jsp′ servlet-name=′jsp′/>

<servlet-mapping url-pattern=′/servlet/*′ servlet-name=′invoker′/>

一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置:

<servlet-mapping url-pattern=′*.xtp′ servlet-name=′com.caucho.jsp.XtpServlet′/>

在Servlet中,也可以指定servlet。如

<servlet servlet-name=′hello′ servlet-class=′test.HelloWorld′/>

<servlet-mapping url-pattern=′/hello.html′ servlet-name=′hello′/>

在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。

Session的配置

参见如下的配置语句:

<session-config>

<session-max>4096</session-max>

<session-timeout>30</session-timeout>

<enable-cookies>true</enable-cookies>

<enable-url-rewriting>true</enable-url-rewriting>

<file-store>WEB-INF/sessions</file-store>

</session-config>

session-max :最大 session数量

session-timeout :session过期时间,以分钟为单位。

是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,enable-url-rewriting应该设成true比较合适。

file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。在这里session还支持了多服务器的设置问题,

通过tcp-store参数设置。由于涉及到负载平衡的问题,在这里不详细叙述,只简单写一个例子:

<http-server>

<http id=′a′ port=′80′/>

<srun id=′a′ host=′host-a′ port=′6802′/>

<http id=′b′ port=′80′/>

<srun id=′b′ host=′host-b′ port=′6802′/>

<host id=′′>

<web-app id=′′>

<session-config>

<tcp-store/>

<always-load-session/>

</session-config>

</web-app>

</host>

</http-server>

这个例子表示session是按照tcp ring的方式传递。

temp-dir 的设置

temp-dir指的是应用的临时目录。也就是在javax.servlet.context.tempdir中用到的目录。模认是应用目录下的WEB-INF mp目录。

以上的设置都可以在<web-app>标签对中设置,控制某个web应用的设置。

2、打包成War发布

以下是介绍对如何在resin下使用已经打包成War的java Web应用进行发布。

其实这个是最简单也是最清晰的良好方法。在j2ee中,所有的项目都打包成ear发布。其中,Web应用打包成war,ejb应用打包成jar。在resin中,这些都可以直接部署。这里我只对打包成war的Web应用的部署做介绍。

在resin.conf中,查找这个:<war-dir id=′webapps′/>。他表示war文件应该被拷贝的路径。这里指的是相对于resin的安装路径,如以上的设置表示d: esinwebapps。只要重新启动Resin就可以了。Resin会把该war自动解包到webapps目录下。你可以在command控制台或者stdout.log中看到类似于

[2002-04-27 09:56:21.680] initializing application http://haitaiserver:8080/rwtest 的语句。这个表示该Web应用是自动安装的。只要这个应用是符合j2ee标准的Web应用,应该不会有问题。通过如上显示的路径就可以访问到这个应用。如果你到d: esinwebapps wtest中浏览,你会看到Resin已经为你生成了rwtest目录,下面是META-INF和WEB-INF还有你自己的JSPservlet 文件和目录。是完全符合j2ee的结构的。你可以在rwtest目录下建立新的jspservlet,一样可以被编译和解析并运行的。在实际操作中,可以使用Jbuilder 或者 WebSphere等Ide工具进行集成调试和打包,非常的方便。

3、打包成Ear发布

一个ear的发布带有就j2ee的一些文件,譬如一个jzjweb.ear他包涵有jzjwebEjb.jar和jzjweb.war,部署相当简单,就是把此文件拷贝到web-apps文件夹下面,这个时候您就可以看到resin的控制台显示有一些初始化的一些信息。这个时候可以通过浏览器进行浏览您的基于j2ee的应用服务器的webApplication了,呵呵,岂不很爽?

三、用resin作为AppServer进行开发的相关配置。

看到resin的这么多优点是不是已经迫不及待了?让我们进行深度探险吧。

1. 进行DataSource的配置

打开<resin_home>/confi/resin.conf,您可以看见里面已经有了这么一段

<resource-ref>

<res-ref-name>jdbc/test</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<init-param driver-name="com.caucho.jdbc.mysql.Driver"/>

<init-param url="jdbc:mysql_caucho://localhost:3306/test"/>

<init-param user="root"/>

<init-param passWord=""/>

<init-param max-connections="20"/>

<init-param max-idle-time="30"/>

</resource-ref>

这些东西我想您一看就知道是什么意思了吧,略作介绍:

<resource-ref> 为资源参引

<res-ref-name>就是资源引用的名字,这个您可要记好了,这是在程序中LookUp的标识哟。

<res-type>就是为引用的类型,在此为DataSource同样也可以为其他的类型。

<ini-param >为初始化的参数

driver-name:为数据库的驱动程序

url: 为数据库的连接URL

user: 为数据库的用户名字

password:为数据库的连接密码

max-connections为数据库的最大连接量

max-idle-time:为最长连接时间

如果我们相配置一个基于Oracle的Datasource应该怎么作呢,我不作解释了,只给出相应的代码,我想您肯定能够知道的。^_^

<resource-ref>

<res-ref-name>jzjwebDataSource</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<init-param driver-name="oracle.jdbc.driver.OracleDriver"/>

<init-param url="jdbc:oracle:thin:@10.1.7.128:1521:ora817"/>

<init-param user="ecid"/>

<init-param password="ecid"/>

<init-param max-connections="120"/>

<init-param max-idle-time="30"/>

</resource-ref>

2. 进行web.XML的配置

Web.xml的配置可以说是关键的,不要听我这么一说感觉很难,其实resin自带一个例子cmp里面的配置说明已经相当经典,我们可以很容易的配置我们所需的webApp,其实有的时候在resin.conf里面的配置的东西,同样在web.xml也是适用,为了自动读取.ejb文件,并且观察ejb文件变化,我们先要引用一些资源文件,如下面的一段设置:

<resource-ref>

<res-ref-name>java:comp/env/cmp</res-ref-name>

<class-name>com.caucho.ejb.EJBServer</class-name>

<init-param data-source="java:comp/env/jdbc/test"/>

<!-- sets the JDBC isolation level -->

<init-param jdbc-isolation="serializable"/>

</resource-ref>

此定义中引用一个CMP的引用,其他的引用也是大同小异,如果要是引用remote的Bean,我们可以通过定义下面的Servelet映射,此映射主要是用来调用远程的EJB,如果您使用一个CMP就不必使用下面的映射了,可以将其删掉

<servlet-mapping>

<url-pattern id=′/burlap/*′/>

<servlet-name id=′com.caucho.burlap.EJBServlet′/>

<init-param url-prefix="http://localhost:8080/hello/burlap"/>

</servlet-mapping>

我们还需要定义对于远程jndi的调用URL,这与前面定义的Servelet要对应的,一个例子:

<jndi-link>

<jndi-name>java:comp/env/ejb</jndi-name>

<jndi-factory>com.caucho.burlap.BurlapContextFactory</jndi-factory>

<init-param java.naming.provider.url="http://localhost:8080/hello/burlap"/>

</jndi-link>

此处hello为App的名称,您可以在不同的地方修改。

通过以上的配置我们就可以运行我们的j2ee程序了,在默认的情况下,文件的存放为:

<<web-App>>/--

-----.jsp

---web-inf/

.ejb

web.xml

<<classes>>/XXX/XXX/XXX.class

<<lib>>/.jar

目录结构完全是安j2ee规范的。

四.一个使用resin服务器的Hello程序。

现在一个<<resin_home>>webapps目录下面建立一个目录hello

这个时候您要是通过浏览器浏览http://localhost:8080/hello 此时会在hello目录下面自动创建一个WEB-INF文件夹,然后在WEB-INF/目录下面建立web.xml文件 和 hello-stateless.ejb

在<<resin_home>>webappshelloWEB-INF 目录下面创建两个目录分别为classes , lib

其中classes为您的class的文件,而lib为您的jar文件存放地。程序代码,见附件。

后记:自己花了一个下午地时间把一个oracle+iplanet的j2ee的程序移至resin服务器下面,虽然还有一些问题,但是个人认为,利用resin进行开发再好不过了,不用把大把大把的时间花在重新启动服务器的,resin对于web.xml 和 java class文件改变都会重载应用程序。

GOOK Luck!

在resin-ee-2.1.5上构建j2ee应用服务

(100101)北京信息工程学院 蔡君( 阿菜) www.justhis.com

----如果要转载请注明来处和作者

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有