顯示具有 JBoss AS 標籤的文章。 顯示所有文章
顯示具有 JBoss AS 標籤的文章。 顯示所有文章

2009年12月29日 星期二

解決 JBoss AS 無法啟動的問題

在不同的 Windows 作業系統執行 JBoss AS,有時候會發生沒辦法啟動的問題,原因是比較新的版本,run.bat 會透過 Windows 內建的 findstr.exe 檔案,去判斷現在找到的 JVM 支不支援 -server 這個選項,或者是不是個 64-Bit 的 JVM。問題是,findstr.exe 檔案所在的位置,有時候不知道為什麼並不在 PATH 環境變數之中。

解決方式也很簡單:要嘛把 findstr.exe 複製到一個 PATH 裡頭找得到的路徑,或是把 findstr.exe 的路徑加到 PATH 環境變數裡面,這樣就可以了。

PS. 一般來說,findstr.exe 檔案放在 C:\Windows\System32 目錄之中。

PS2. 另外兩個常見會導致無法執行 JBoss AS 的問題,一個是把 JDK 裝在像 C:\Program Files 這種路徑當中有空白的目錄之中,另一個是沒有設定 JAVA_HOME 環境變數。

2008年9月9日 星期二

JBoss AS 的 EJB 3.0 的命名衝突

JBoss AS 的 EJB 3.0 Support 一直做的都還不錯,所以上課的時候我很喜歡拿它來作示範。

前幾天發生一個狀況:程式明明沒錯,部署起來也沒看到什麼明顯的錯誤訊息,但是執行就是會有問題,一直抱怨找不到一些方法,可是我明明就有寫。

後來發現,我是直接部署 JAR 檔案,所以 Session Bean 的名稱預設就是 ClassName/remote 或 ClassName/local,因為我在兩個不同的 EJB Module 裡面定義了相同名稱、不同功能的 Session Bean,所以其中一個實際上並沒有部署成功。結果程式執行的時候,一直找到另一個功能不相同的同名 Session Bean,所以才會出問題。

解決方法是,要嘛把另一個有同名 Session Bean 的 EJB Module 移除,不然就是不要直接部署 EJB Module,先定義 Enterprise Application,加入 EJB Module 之後再部署,這樣 SessionBean 的預設命名方式就會變成 EARName/ClassName/remote 或 EARName/ClassName/local,也就不會產生命名衝突了!

2008年6月30日 星期一

JBoss AS 搭配 MySQL XA DataSource 設定方式

多方參考網路上的設定,測試之後,發現以下的內容就足夠了:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<xa-datasource>
<jndi-name>YourDataSourceName</jndi-name>
<xa-datasource-class>
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
</xa-datasource-class>
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/DBName
</xa-datasource-property>
<user-name>YourUsername</user-name>
<password>YourPassword</password>
<track-connection-by-tx>
true
</track-connection-by-tx>
<new-connection-sql>
set autocommit=1
</new-connection-sql>
<no-tx-separate-pools>
true
</no-tx-separate-pools>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>
</datasources>
檔案名稱按照 JBoss AS 的規定,必須以「-xa-ds.xml」結尾,比方說「yourdb-xa-ds.xml」,放在使用組態下的 deploy 目錄即可。

這邊有一件事要注意到,因為 JBoss 本身處理的不夠完善,所以像底下這樣 Pretty-Format 過的寫法會出問題:
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/DBName
</xa-datasource-property>
必須改成底下的寫法:
<xa-datasource-property name="URL">jdbc:mysql://localhost:3306/DBName</xa-datasource-property>
這種 Bug 至少在 2003 年 8 月 JBoss 就已經承認,詳見這裡,可是到現在已經 5.0.1 GA 版本了,還是依然存在。

2008年5月27日 星期二

Eclipse/WTP Europa 記趣

兩件好玩的事情

1. Ubuntu 執行 Eclipse 的時候會抱怨

"Could not initialize the application's security component. The most likely cause is problems with files in your application's profile directory. Please check that this directory has no read/write restrictions and your hard disk is not full or close to full. It is recommended that you exit the application and fix the problem. If you continue to use this session, you might see incorrect application behaviour when accessing security features."

解決方式也很簡單根據 Bug #188380 in eclipse (Ubuntu) 的說法,只要在 ~/.mozilla 裡面建立一個叫作 eclipse 的目錄即可。

2. 搭配 JBoss AS 的時候這一的 WTP 居然不能直接部署 WAR 檔案必須要封裝成 EAR 檔案才可以

解決方式也很簡單裝上 JBoss Tools在定義 Server Runtime 的時候不要選 WTP 提供的 JBoss、JBoss v4.2用 JBoss, a division of Red Hat 裡面的 JBoss 4.2 Runtime這樣定義出來的 Server 就可以在 WTP 裡面直接將 Dynamic Web Project 拿來執行了