国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在resin-ee-2.1.5上構建j2ee應用服務

2019-11-18 16:15:48
字體:
來源:轉載
供稿:網友

  在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-</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://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 闽侯县| 呼和浩特市| 如皋市| 交口县| 县级市| 新巴尔虎右旗| 盐边县| 贵港市| 隆昌县| 外汇| 蕉岭县| 湖南省| 青铜峡市| 宁城县| 大理市| 阿拉善左旗| 定西市| 东平县| 侯马市| 革吉县| 汉川市| 漾濞| 武陟县| 井陉县| 莲花县| 县级市| 读书| 正蓝旗| 长春市| 辽中县| 尼玛县| 沅江市| 桂阳县| 门头沟区| 通化市| 长沙县| 兰考县| 东至县| 长兴县| 德化县| 颍上县|