引言
本系列文章的第1部分討論了應用程序設計者們想在SMTP上使用SOAP的原因,以及各種實現情況中的折衷設計。
這篇文章將討論幾種實現方式之一的原始SMTP,并且讓它運行在IBM®WebSphere®StudioApplicationDeveloper中(下文中稱之為ApplicationDeveloper)。
這些指令在RedHatLinux7.2上運行的ApplicationDeveloper4.03上被測試過。
收集組件
您可以從下面下載源代碼。我們將會需要幾部分組件讓Axis和SMTP運行于ApplicationDeveloper。下面是每個組件的描述和鏈接:
JavaMail用于發送和接收SMTP電子郵件。我們使用它所提供的mail.jar。
Java™ActivationFramework由JavaMail所使用。我們需要這個組件中的activation.jar。
ApacheAxis用于我們Web服務的處理。如果您下載的是這個包的源文件版本,那么您還需要下載Ant來構建它。
提供的代碼要使用JUnit測試案例和HTTPUnit測試案例。它們是可選的,但我們強烈推薦您使用它們。
在ApplicationDeveloper中安裝代碼
首先,在ApplicationDeveloper中創建一個名為SOAP-SMTP的Web項目。確保它有一個名為/Axis的上下文根。圖1是您在項目創建向導中應該看到的。請單擊Finish。
圖1.Web項目創建向導
如果您此時還沒有為其他工作安裝JUnit和HttpUnit的話,您可以安裝它們。JUnit應該安裝到它自己的Java項目中,而HttpUnit應該安裝到它自己的Web項目中。
我們現在可以為SOAP-SMTP項目添加代碼了:
在Navigator視圖中打開項目,然后單擊source文件夾。
在菜單欄單擊File=>Import。
選擇從一個ZIP文件導入,然后單擊Next。
瀏覽并找到您下載的soap-smtp.zip,選擇所有類型,確保目標為SOAP-SMTP/source。
單擊Finish。ApplicationDeveloper導入并且編譯源代碼。您將會看到編譯出現問題,因為我們還沒有指定我們所需要的所有JAR文件,我們現在開始完成這些工作。
將JAR文件添加到編譯期類路徑中
此時,如果您下載了Axis的源文件分發版,您需要構建它。指令在AxisZIP文件中。
右鍵單擊SOAP-SMTP項目,然后選擇Properties。
在左邊窗格中選擇JavaBuildPath,它用來設置編譯代碼的類路徑。
選擇Projects選項卡,如果您已經創建了JUnit和HttpUnit項目,選中他們。這將編譯和執行測試類。
選擇Libraries選項卡。
我們需要在這里添加幾個JAR文件。單擊AddExternalJAR,瀏覽并找到您下載JavaMail的目錄然后添加mail.jar。
類似地,瀏覽并找到您下載JavaActivationFramework(JAF)的目錄,然后添加activation.jar。
現在從Axis添加7個JAR文件:axis.jar、commons-discovery.jar、commons-logging.jar、jaxrpc.jar、log4j-1.2.4.jar(您的數字可能會有不同,這取決于您下載Axis的時間)、saaj.jar和wsdl4j.jar。
我們還需要添加幾個標準的JAR文件,它們是ApplicationDeveloper中包含的WebSphereApplicationServer所附帶的。單擊AddVariable然后添加WAS_XERCES和WAS_XALAN。
為了運行一些示例,我們需要覆蓋ApplicationDeveloper附帶的mail.jar和activation.jar。單擊Order選項卡,然后把這兩個新添加的JAR文件移動到列表最上方的rt.jar之上。
當您單擊OK時,大多數編譯問題都應該被解決了。切換到Java包視圖時您應該會看到類似于圖2的界面:
圖2.Packages視圖中的相關JAR文件
現在我們需要將正確的Axis部分添加到我們的項目中。我們已經有了基本的Axis代碼,但我們要使用它們的示例,所以我們得連接到Web服務上。同樣地,單擊SOAP-SMTP=>source,然后選擇File=>Import。選擇Importfromafilesystem,然后導入Axis示例。您需要從他們的構建目錄而不是從src目錄樹得到這些示例,因為并不是所有的東西都在src中。我是從
有些Axis源文件會有編譯問題,因為它們依賴于crypto或者其他一些我們不使用的東西。您可以忽略這些問題。
此時,如果您已經安裝了JUnit,您應該可以在khygh.smtp.unit中的任何一個類上執行JUnit了。
在WebSphereTestEnvironment中執行
我們已經差不多完成了,但考慮到ApplicationDeveloper中TestEnvironment的特性,我們還需要為運行時設置正確的JAR文件。為了完成設置,請打開Servers透視圖,然后在ServerConfiguration視圖中打開WebSphereTestEnvironment服務器實例。單擊Paths選項卡。我們需要添加以前添加到Web項目構建路徑中的大部分JAR文件,這樣它們就可以被WebSphere運行時找到。使您的WebSphereTestEnvironment窗口如圖3所示,換上您的JAR的文件正確路徑:
圖3.WebSphereTestEnvironment的類路徑
WebSphere有自帶的mail.jar和activation.jar,位于JVM的擴展目錄,這意味著它們會首先被裝入。為了使用您下載的最新版本,您需要將原有的那些文件移動到硬盤的其他地方。(把它們重命名是不夠的,因為即使把它們重命名為xxxx.jar.old,他們仍然可以被使用)。ApplicationDeveloper中有若干個地方存在這些JAR文件,我們需要移動的那些位于
確保包含HttpUnit(如果您已經安裝它)的DefaultEar和SOAP-SMTP在WebSphereTestEnvironment服務器配置中。
現在您需要在web.xml中添加需要的項。在Navigator視圖或Packages視圖中,打開SOAP-SMTP=>webApplication=>WEB-INF,然后打開web.xml,單擊Source選項卡。使您的窗口如下面的圖4所示,確保您的啟動參數是正確的:
圖4.web.xml
在DefaultEAR項目下打開application.xml,確保SOAP-SMTP有一個名為/Axis的上下文根,這是Axisadminservlet需要的。
祝賀您!您已經全部配置好了,現在就可以啟動WebSphereTestEnvironment。從Server透視圖中,單擊Servers視圖并啟動WebSphereTestEnvironment。它應該會切換到Console視圖,您可以在WebSphereApplictionServer啟動時看到消息。如果它啟動時拋出了任何異常,請檢查前面的步驟,確保您遵循了配置WebSphereTestEnvironment的說明。
結束語
在這篇文章中,我們成功地在WebSphereStudio中部署了代碼。本系列文章的下一篇將會討論基于SMTP的SOAP實現。
原文轉自:http://www.anti-gravitydesign.com