jboss to weblogic移值說明(原創)

mcindo發表於2003-07-31
好不容易把原有的jboss系統移值到了weblogic上,呵呵花了一天時間,真是充滿痛苦和憤怒,就像當初把

系統部署到jboss上一樣,一出錯就是好多,呵呵,只有一個個的看,但比較另人費解的是,在部署jboss出錯

時,前後錯誤不一樣,前面提示的是正確的,而後面又提示你是別的bean出現不符合規範引起的錯誤。呵呵,

不說了,想必各位也經歷過如何情形,慢慢享受吧。言歸正傳:


在我看來jboss的配置還是比較簡單,不是很複雜和難以理解的,儘管都是手工的(沒有人用jmx-console配吧

),雖然weblogic的配置很圖形化,但是不知道配置的東東跑到什麼地方去了,config.xml檔案只能找到conne

ction pool等得配置,但是系統級的找不著,很典型的是log級別的配置,不知放哪裡了,對weblogic瞭解不深

,還望各位高手指點。

第一步:jbosscmp-jdbc.xml->weblogic-cmp-rdbms-jar.xml
如果你沒有weblogic-cmp-rdbms-jar.xml檔案的樣本,jbuilder生成一個。
這個檔案主要包含ejb欄位和資料庫欄位的對應關係,移植這個檔案修改不是很多,主要是datasource

需要修改,其餘就是tag的不同了。
首先是資料來源的修改,weblogic和jboss都提供對某個具體的EntityBean的datasource定義,而jboss還

提供所有預設的datasource,所以如果jbosscmp-jdbc.xml用的預設的datasource形如:

<defaults>
		<datasource>java:/OracleDS</datasource>
		<datasource-mapping>Oracle9i</datasource-mapping>
		<create-table>false</create-table>
</defaults>
<p class="indent">

的得修改一下了,加到每個WEBLOGIC 每個定義entity下。另外java:/OracleDS得修改為OracleDS
示例:

jbosscmp-jdbc.xml
<jbosscmp-jdbc>
	<defaults>
		<datasource>java:/OracleDS</datasource>
		<datasource-mapping>Oracle9i</datasource-mapping>
		<create-table>false</create-table>
	</defaults>
	<enterprise-beans>
		<entity>
			<ejb-name>Test</ejb-name>
			<table-name>Test</table-name>
			<cmp-field>
				<field-name>lineNbr</field-name>
				<column-name>LINE_NBR</column-name>
			</cmp-field>
			<cmp-field>
				<field-name>nxxNbr</field-name>
				<column-name>NXX_NBR</column-name>
			</cmp-field>
		
		</entity>
        <enterprise-beans>
        ....
</bosscmp-jdbc>

移植後的WEBLOGIC weblogic-cmp-rdbms-jar.xml

<weblogic-rdbms-jar>
    <weblogic-rdbms-bean>
		<ejb-name>AccNbr</ejb-name>
		<data-source-name>OracleDS</data-source-name>
		<table-map>
			<table-name>Test</table-name>
			<field-map>
				<cmp-field>lineNbr</cmp-field>
				<dbms-column>LINE_NBR</dbms-column>
			</field-map>
			<field-map>
				<cmp-field>nxxNbr</cmp-field>
				<dbms-column>NXX_NBR</dbms-column>
			</field-map>
                 </table-map>
    </weblogic-rdbms-bean>
    ....
</weblogic-rdbms-jar>

注意weblogic datasource每個entity都需定義

第二步:jboss.xml->weblogic-ejb-jar.xml
jboss.xml中主要描述的是EJB的local和remote jndi名稱,以及EJB資源和實際的對應關係
weblogic.xml中也是如此,weblogic中還必須定義Entity的persistence type。
除此,如過你沒有用到別的依賴伺服器的設定,基本上修改也就不多了。
sessionbean大體上不用修改啥,修改一下tag就ok了。對於entity還得加上entity-descriptor
示例:

jboss.xml
	<entity>
			<ejb-name>Test</ejb-name>
			<local-jndi-name>Test</local-jndi-name>
	</entity>

weblogic-ejb-jar.xml
<weblogic-enterprise-bean>
			<ejb-name>Test</ejb-name>
			<entity-descriptor>
	            <persistence>
	                <persistence-use>
	                    <type-identifier>WebLogic_CMP_RDBMS</type-identifier>
	                    <type-version>6.0</type-version>
	                    <type-storage>META-INF/weblogic-cmp-rdbms-jar.xml</type-storage>
	                </persistence-use>
	            </persistence>
        	</entity-descriptor>
			<local-jndi-name>Test</local-jndi-name>
</weblogic-enterprise-bean>

對於ejb來將需要修改的地方只有兩處了,當然如果你需要調整一下效能,那就是以後慢慢加的事了。
對於web應用來要可能增加weblogic.xml配置檔案(如果你定義了ejb引用的話),也可以不要。




好了部署檔案的修改完了。下面是weblogic的配置了,網上weblogic配置的文件也不少。我大概說說datasourc

e配置,以及和jboss的區別
jboss: 在JBOSS_HOME\docs\examples\jca目錄中有關於各個資料庫的配置(如oracle-ds.xml),修改一

下然後放到jboss的deploy目錄下(jboss預設啟動的是default那個目錄,如果你要啟動別的配置,需加引數-

c)
,注意jndi-name名稱就是你在部署檔案中用到的OracleDS,如果你想加一些其他的關於datasource的配置(如

對最大連線數的配置),可以將jca目錄下generic-ds.xml配置考到你的檔案中,那個是所有ds的預設配置。(3.

2.1和3.0.X不同)

weblogic:先配置connection pools,配置一個連線,然後再新建一個datasource就ok了.
這裡有點說明:weblogic的DataSource

Jndi是OracleDS,而jboss是java:/OracleDS,注意兩者datasource的區別.

配置好後可以將你檔案打包部署到weblogic上了,如果在development

mode模式,可以直接將檔案copy到user_projects\mydomain\applications下,weblogic會自動部署,不過你上控

制臺看一下部署好的應用名可能不是你剛才的那個,weblogic也自動生成一個臨時的名稱
也可以直接再控制檯上上傳檔案部署,或者用別的工具了.

說一下部署過程中會遇到的一些問題.
1.不符合ejb規範.報錯ejbc....之類的錯誤,這種情況最好在部署時將weblogic的log級別調整到info

lever,這樣可以看到具體是什麼地方不符合規範.如果你只透過web看部署的錯誤,你會弄的一頭霧水的.:)


這裡要說一點的是,我原來用xdoclet生成的ejb在jboss上部署沒問題,在weblogic中部署提示少了一個ejbRemov

e方發,查了一下果然是少了,而jboss部署沒有報錯,這可能和實現有關係,weblogic是透過ejbc生成stub和proxy

程式碼,而jboss主要使用的reflect,會提供給ejb一些預設的方法.(個人想法)
2.datasource沒找著,在部署entity時,會根據datasource去找資料來源的,如果你部署檔案寫錯了,或者你配置

的有問題,都會引起該問題.


3.log4j問題,JBOSS是使用的log4j做為日誌,所以原來程式的log配置都和jboss放在一起了,現在移值到weblogi

c上,呵呵,都沒了,只是我的info lever的日誌可以出來.看來得手工配一配了:)

以上講的是ejb移植平臺最基本的配置,由於本人對weblogic不熟,沒有涉及高階一些的配置.其中有些不對的

地方,懇請交流指正!
歡迎來信探討

mcindo
mcindo@etang.com

相關文章