使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 将此頁作為電子郵件發送
級别: 中級
Tyler Anderson ([email protected]), 自由作家, Stexar Corp.
2006 年 8 月 31 日
随着 Apache Axis 及其最新産品 —— Axis2 的出現,在 Apache Geronimo 上開發 Web 服務已經變得非常輕松并且也不太繁瑣了。Axis2 是對 Axis 的重要改進,這是因為在 Axis2 上實作了更好的體系結構,簡化了開發,并且 Axis2 提供了更多的資料綁定支援。本文介紹如何使用示例 Web 服務,以及如何将以前在 Axis 中開發的 Web 服務遷移到 Axis2 中。将讨論 Axis2 與 Axis 相比的多種改進和提高,以及這與在 Geronimo 應用伺服器上部署新移植的 Axis2 Web 服務有什麼關聯。 介紹
Apache Axis 和 Axis2 專門用來優化建立 Web 服務的過程。通過 Web Services Description Language(WSDL),Axis 和 Axis2 都将自動生成 Java™ 類 —— 使用 WSDL2Java 工具 —— 這是在 Apache Geronimo 上構造和部署 Web 服務所必需的。
Apache Axis 項目是作為 Apache 簡單對象通路協定(SOAP)項目的後續項目開始的,用于實作 Web 服務,它是一種非常優秀的技術。事實上,有好幾家公司都将 Axis 作為在其産品中開發和實作 Web 服務的方法。
Axis2 通過一個新的子產品化體系結構提供了比 Axis 更高的性能。Axis2 Apache Web 站點報道說,“Apache Axis2 ...[建構]在 Axis1 中開發的 ‘handler chain’ 模型上之上 ... Axis2 引入了更加靈活的管道體系結構,進而實作更子產品化、更具有可擴充性。這種可擴充性将允許 Axis2 作為大量不斷增長的相關 Web 服務協定的基礎...” Web 服務的目的是要支援将出現的各種标準(請參見此指南稍後的 參考資料 部分以擷取相關連結)。但 Axis 很難這樣做,因為它沒有足夠的幹淨的擴充層。通過利用新的 Axis2,此問題将得以克服,是以目前 Axis2 計劃實作新的 Web 服務協定,啟用 WS-Security、WS-Addressing 和 WS-ReliableMessaging,然後從此進行擴充。
事實上,Axis2 甚至尚未發行一個完整的版本;但它功能性特别強,并且在黃金時段一定能夠随時可用。而令人驚訝的是 Apache 團隊僅用五個月的時間就從 milestone 1 版更新到了非常有用的版本 0.9。
是以,對于 Axis2 中的所有改進,有些開發人員可能想知道它們的差別,更為重要的是了解需要做哪些改動以将其 Axis Web 服務移植到 Axis2。本文僅介紹在 Geronimo 上進行部署和測試的方法,并假定以前不了解 Axis 和 Axis2;另外,本文假定最初的 Axis Web 服務是使用 Axis WSDL2Java 工具在現有的 WSDL 上建構的(将通過 Axis2 中的 xmlbeans 建構資料綁定)。
若要開始本文中介紹的移植,首先需要下載下傳和安裝必要的技術。
行動起來
對于本文,需要以下産品和技術:
Java 代碼 —— Apache Geronimo 是一個 Java 2 Platform, Enterprise Edition (J2EE) 1.4 認證的應用伺服器,是以需要 下載下傳 Java 1.4.2_08 或 1.4.2_09。 Apache Geronimo —— 在安裝 Java 代碼之後,下載下傳 Geronimo Version 1.0 二進制發行版。 Apache Axis —— 本文使用 Axis 1.3。 從 Apache 下載下傳 Axis Java 版本。 Apache Axis2 —— 本文使用 Axis2 0.94。從 Apache 下載下傳 Axis2 标準二進制和 WAR 發行版(兩種下載下傳)。 Apache Ant —— Axis2 WSDL2Java 工具建立 Ant build.xml 檔案,是以需要 下載下傳 Ant 以利用此工具。 将每個 .jar、.war、.zip 或 tar.gz 檔案解壓到不同的目錄,現在就可以啟動 Apache Geronimo 了。請轉到 <geronimo-install-dir>/bin,并輸入以下内容以啟動 Geronimo: java -jar server.jar
Geronimo 将加載并等待您部署本文後面提及的 Web 服務。現在讓我們将話題轉到 Axis2 相對于 Axis 的提高上。 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 回頁首
提高
Axis2 有幾個優于 Axis 的改進,它們可以幫助加快響應速度以及提高可擴充性和子產品化。但遺憾的是,向後相容性是個問題。作為一個産品過程,人們需要它具有向後相容性,以便不讓以前的産品失效;但是,由于 Axis 和 Axis2 是在不同的體系結構上開發的,是以 API 可能很難支援。Axis2 支援 Axis 資料綁定(ADB),這一點與 Axis 非常相似,但它仍然受限,并且不如 Axis2 的預設資料綁定的支援功能強。
而利用子產品化的體系結構,在整篇文章中您可以輕松地比較使用 WSDL2Java 工具時二者之間的子產品性。事實上,Axis2 WSDL2Java 工具可生成數百個檔案,如果您實作其他的 Web 服務标準,檔案可能會更多,因為 XSD 模式中的每個元素和複雜類型都有其自己的類和實作類。這将大大提高對 Axis2 的 xmlbeans 資料的綁定支援 —— 每個消息和 SOAP 文檔對象都将獲得其自己的對象。
另一個巨大改進是部署。部署 Axis Web 服務非常繁瑣,并需要深入挖掘才能對每種東西進行分類,同時 Web Services Deployment Descriptor(.wsdd)檔案是最受支援的方法。不過,使用 Axis 則涉及到建構 Axis 存檔檔案(.aar),後者可以通過使用 Axis2 Web 接口輕松地部署和重新部署。
您将在本文的其他部分看到每一處改進。下面我們看一下對 Web 服務的簡介。
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 回頁首
Web 服務
本文使用可以在 下載下傳 部分看到的在 WSDL 中定義的簡單 Web 服務。它具有單個操作 ——
Ask
,這個操作帶有單個 String
參數 —— question
,并傳回單個 String
作為響應 answer
。 Ask
的 XSD 和 Web 服務的 AskResponse
元素顯示在 清單 1 中。
清單 1. Ask 和 AskResponse
<xsd:element name="Ask">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1"
name="question" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AskResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" maxOccurs="1"
name="answer" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
WSDL 檔案的完整細節将留作練習。通過 參考資料 部分中的連結可以了解到有關 WSDL 的更多知識。
Axis Web 服務
為了獲得完整性,現在可以建構 Axis Web 服務并定義其内部。下面的部分将詳細叙述遷移到 Axis2 所需的更改和差異。
若要通過 Axis 為 Web 服務建立 Java 檔案,必須確定 <axis-install-dir>/lib 目錄中的每個 .jar 檔案在 CLASSPATH 中。然後輸入以下内容以建立 Web 服務:
java org.apache.axis.wsdl.WSDL2Java -S true ask.wsdl
這些檔案将在 ./com/example/www/ask 目錄中建立。若要實作 Axis Web 服務,隻需要修改下面将要講述的一個檔案。
端口綁定實作
Axis 實作 Web 服務比其繼任者(Axis2)簡單。Axis 隻處理基本的原始對象,如
String
、 int
、 float
等。
在 Axis 中,AskPortBindingImpl.java 檔案是實作 Web 服務的地方。請在 ./com/example/www/ask/AskPortBindingImpl.java 中查找并定義它,如 清單 2 所示。
清單 2. 在 Axis 中處理 Ask 操作
package com.example.www.ask;
public class AskPortBindingImpl implements
com.example.www.ask.AskPortType{
public java.lang.String ask(java.lang.String question)
throws java.rmi.RemoteException {
System.out.println("QUESTION ASKED: " + question);
return "Why ask me, Georgy, I don't know anything!!!";
}
}
該類包含在 ask.wsdl 檔案中定義的單個 Ask
操作,它接受問題 String
,并傳回回答 String
。接下來需要定義與 Axis Web 服務通信的客戶機存根。
Java 客戶機
在此,需要用 Java 語言定義與 Axis Web 服務通信的指令行客戶機。在 AskPortBindingImpl.java 檔案所在的目錄中定義檔案 AskServiceTestCase.java,如 清單 3 所示。
清單 3. Axis 客戶機存根
package com.example.www.ask;
public class AskServiceTestCase {
public static void main(String args[]) throws Exception {
com.example.www.ask.AskPortBindingStub binding = null;
try {
binding = (com.example.www.ask.AskPortBindingStub)
new com.example.www.ask.
AskServiceLocator().getAskPort();
}
catch (Exception e) {
e.printStackTrace();
}
// Test operation
java.lang.String answer = null;
answer = binding.ask(new java.lang.String("I have a hole in"+
" my bucket, dear Liza, with what should I fix it?"));
System.out.println("ANSWER RECEIVED: " + answer);
}
}
客戶機存根對象将通過使用 AskServiceLocator
對象在 try
語句中建立,後者為在 WSDL 中定義的服務定義了服務位址和端口。最後兩行将調用 Ask
操作并傳遞問題。将接收回答并顯示給使用者。
在 Geronimo 上部署和運作客戶機
現在可以設定 Axis 安裝并将 Axis Web 服務打包,進而在 Geronimo 上部署。進入 Axis Web 服務所在的目錄并輸入以下内容,進而建立包含 Web 服務部署描述符的 server-config.wsdd 檔案:
(對于整個這一節,要確定 <axis-install-dir>/lib 中的 .jar 檔案在 CLASSPATH 中。)
cd com/example/www/ask
java org.apache.axis.utils.Admin server com/example/www/ask/deploy.wsdd
這将建立 server-config.wsdd 檔案。請将此檔案複制到 WEB-INF 目錄: cp server-config.wsdd <axis-install-dir>/webapps/axis/WEB-INF
現在向上經過四個目錄進入 Axis Web 服務的根部,并編譯 Java 檔案。然後将這些檔案複制到 Axis WEB-INF/classes 目錄: javac com/example/www/ask/*.java
cp -r com <axis-install-dir>/webapps/axis/WEB-INF/classes
現在與 Web 服務一起打包(WAR)并部署 Axis: cd <axis-install-dir>/webapps/axis
jar -cvf axis.war *
mv axis.war <geronimo-install-dir>/deploy
Geronimo Hot Deployer 現在應該會發現和部署 Axis。一旦部署,就運作 AskServiceTestCase
類中的客戶機代碼: java com.example.www.ask.AskServiceTestCase
應該會看到下面這樣的伺服器輸出: QUESTION ASKED: I have a hole in my bucket, dear Liza, with what should I fix it?
還應該會看到來自客戶機的以下内容: ANSWER RECEIVED: Why ask me, Georgy, I don't know anything!!!
這些就是進行部署的許多步驟!接下來看看部署 Axis2 Web 服務會有多麼容易。 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 回頁首
比較和對照 Axis2
注意,隻要看一下本節中的骨架和客戶機,就會發現 Axis2 非常與衆不同,本節把它與 Axis 進行對比。
甚至對 WSDL2Java 工具的使用也很不一般。確定 <axis2-install-dir>/WEB-INF/lib 目錄中的所有 .jar 檔案都在 CLASSPATH 中,然後通過輸入以下内容建立 Axis2 Java 類:
java org.apache.axis2.wsdl.WSDL2Java -uri ask.wsdl -ss -sd
-p com.ibm.axis2.ask -d xmlbeans
現在輸入以下内容來建立客戶機存根: java org.apache.axis2.wsdl.WSDL2Java -uri ask.wsdl -sd
-p com.ibm.axis2.ask -d xmlbeans
骨架和客戶機存根檔案将在 ./src/com/ibm/axis2/ask 目錄中建立, AskDocument
和 AskResonseDocument
類在 ./src/com/example/www/ask/xsd 目錄中建立。幾個 xmlsoap
類在 ./src/org/xmlsoap/schemas/soap/encoding 中建立。是以您可能已經看到,盡管 Axis2 在開始時可能看起來更加複雜,有太多要建立的類,但是 Axis2 具有更子產品化的體系結構,并使用此體系結構更加高效。
伺服器骨架
在 Axis2 中,可以定義伺服器骨架類本身,而不是實作對象。另外,可以在下面的代碼中看到這個體系結構的子產品性是多麼強。請查找和定義在 ./src/com/ibm/axis2/ask/AskPortTypeSkeleton.java 中發現的檔案,如 清單 4 所示。
清單 4. 定義伺服器骨架
package com.ibm.axis2.ask;
public class AskPortTypeSkeleton {
public com.example.www.ask.xsd.AskResponseDocument Ask
(com.example.www.ask.xsd.AskDocument param0 ){
System.out.println("QUESTION ASKED: " +
param0.getAsk().getQuestion());
com.example.www.ask.xsd.AskResponseDocument res =
com.example.www.ask.xsd.AskResponseDocument.
Factory.newInstance();
com.example.www.ask.xsd.AskResponseDocument.AskResponse res2 =
res.addNewAskResponse();
res2.setAnswer("Why ask me, Georgy, I don't know anything!!!");
return res;
}
}
注意,Ask 操作的傳回類型和傳入對象分别是 AskResponseDocument
和 AskDocument
,而不僅僅是簡單的 String
對象。像 Axis 一樣,問題還是 String 對象,可以通過首先獲得傳入的 AskDocument
對象中的 Ask
對象并調用 Ask
對象的 getQuestion()
方法來獲得問題。
用粗體字顯示的最後七行建立了響應。首先,
AskResponseDocument
對象通過在 AskResponseDocument
中建立的 AskResponse
對象得以執行個體化。最後,将通過調用 AskResponse
對象的 setAnswer()
方法設定回答。注意, AskResponseDocument
将作為響應傳回到進行調用的 SOAP 用戶端。回答和 AskResponse
對象将封裝在 AskResponseDocument
對象中。
如上例所示,使用 Axis2 更子產品化的體系結構,向 Axis2 添加更多特性和功能的過程更容易編碼和實作。
Java 客戶機
調用 Web 服務也很不同一般,這反映了 Axis2 的改進和提高。請在 ./src/com/ibm/axis2/ask/Client.java 中建立一個檔案并如 清單 5 所示定義它。
清單 5. Axis2 客戶機代碼
package com.ibm.axis2.ask;
import com.example.www.ask.xsd.*;
public class Client{
public static void main(java.lang.String args[]){
try{
AskPortTypeStub stub = new AskPortTypeStub(null,
"http://localhost:8080/axis2/services/AskService");
ask(stub);
} catch(Exception e){
e.printStackTrace();
}
}
/* Ask */
public static boolean ask(AskPortTypeStub stub){
try{
AskDocument reqDoc = AskDocument.Factory.newInstance();
AskDocument.Ask reqDoc2 = reqDoc.addNewAsk();
reqDoc2.setQuestion("I have a hole in"+
" my bucket, dear Liza, with what should I fix it?");
AskResponseDocument resDoc = stub.Ask(reqDoc);
System.out.println("ANSWER RECEIVED: " +
resDoc.getAskResponse().getAnswer());
return true;
} catch(Exception e){
e.printStackTrace();
}
return false;
}
}
需要引起注意的代碼用粗體顯示。第一行通過接受服務端點或該服務的 URL 建立客戶機存根。然後将調用 ask()
方法,後者建立 Ask
請求,這與 AskResponseDocument
在 清單 4 中的建立方法類似。該請求将通過調用 stub.Ask()
發送,并将把響應放在 resDoc
中。然後可以通過調用 resDoc.getAskResponse().getAnswer()
來獲得接收到的回答,這類似于在 清單 4 的骨架代碼的開頭處獲得問題的方法。
到目前為止,您在 Axis 和 Axis2 中看到的 Web 服務都是同步的,它們也被稱為阻塞的 Web 服務調用。Axis2 通過非阻塞調用提供了更多的異步支援,可以将它們放在
AskPortTypeCallbackHandler
類中,并在上述用戶端代碼中調用 stub.startAsk()
,而不是 stub.Ask()
。
在 Geronimo 上部署和運作客戶機
與 Axis 相比,部署 Axis2 Web 服務更為輕松并且不需要太多的步驟。同樣,在本節中要確定 <axis2-install-dir>/WEB-INF/lib 目錄中的所有 .jar 檔案都在 CLASSPATH 中。現在部署前面下載下傳到 Geronimo 上的 axis2.war:
cp axis2.war <geronimo-install-dir>/deploy
通過輸入以下内容編譯構成 Axis2 Web 服務的所有 Java 檔案: ant jar.server
AskService.aar 檔案在 ./build/lib/AskService.aar 中建立,此檔案随時可通過其 Web 接口部署在 Axis2 上。請打開浏覽器,進入 http://localhost:8080/axis2/Login.jsp。
現在分别使用 admin 和 axis2 作為使用者名和密碼登入(參見 圖 1)。
圖 1. 登入到 Axis2
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 接下來,将浏覽器指向 http://localhost:8080/axis2/upload.jsp。
單擊 browse 按鈕,查找剛才建立的 Ask.aar 檔案,然後單擊 Open。現在單擊 upload(參見 圖 2)。幾秒之後,将完全部署您的 Web 服務。
圖 2. 上載 Axis2 Web 服務
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 既然已經部署了 Web 服務,就可以通過運作客戶機進行測試。為此,必須将 AskService.aar 檔案和 XBeans-packaged.jar 檔案(都在 ./build/lib 目錄中)添加到 CLASSPATH 中。在完成此操作後,請輸入以下内容來運作客戶機: java com.ibm.axis2.ask.Client
應該會看到分别來自伺服器和控制台的關于 Liza 和 Georgy 的輸出消息,這些消息與在運作 Axis Web 服務的用戶端時看到的輸出消息相同。
注意,在 Axis2 中部署比在 Axis 中更簡單,這都要歸功于友善的 build.xml 檔案、Axis Archive 檔案和功能性強的 Web 接口!
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 回頁首
結束語
現在您已經使用 Apache Geronimo 成功地将 Axis Web 服務移植到了 Axis2 中。已經看到了 Axis2 對 Axis 進行了哪些改進。請查閱 參考資料 部分,了解關于這種重要的新工具 Axis2 的更多知識。
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 回頁首
下載下傳 描述 名字 大小 下載下傳方法 Sample code axis2source.zip 10KB HTTP
使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 關于下載下傳方法的資訊 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2
參考資料
學習
您可以參閱本文在 developerWorks 全球站點上的 英文原文 。 更多了解 使用 Axis2 的 Web 開發服務。 通路 Apache Ant 手冊。 擷取 Apache Axis 文檔。 通路 Apache Axis2 0.94 文檔。 通路 Apache Geronimo Web 站點。 通路 developerWorks 開放源碼專區 以了解更多的 how-to 資訊、工具和項目更新,幫助您用開放源碼技術進行開發并将它們用于 IBM 的産品。 閱讀 developerWorks Apache Geronimo 項目區 的文章、指南和其他資源,以幫助啟動 Geronimo 開發。 了解 IBM Support for Apache Geronimo,它讓您可以在全球級别的 IBM 支援下開發 Geronimo 應用程式。 在 developerWorks 的 即刻開始學習 Apache Geronimo 部分中,查找對于初學者和熟練使用者非常有用的資源。 浏覽 developerWorks 專區上所有的 Apache 文章 和 免費 Apache 教程。 獲得産品和技術 利用 IBM 試用版軟體 革新您的下一個開放源碼開發項目,這可通過下載下傳或 DVD 擷取。 下載下傳 Apache Geronimo, Version 1.0。 下載下傳 IBM WebSphere® Application Server Community Edition V1.0 的免費版本,它是采用 Apache Geronimo 開放源碼技術建構的輕量級 J2EE 應用伺服器,專門用來幫助您加速開發和部署工作。 讨論 參與論壇讨論。 通過 Apache Geronimo blog 了解 Geronimo 開發的最新進展。 關于作者 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2使用 Apache Geronimo 将 Apache Axis 應用程式移植到 Axis2 Tyler Anderson 于 2004 年畢業于 Brigham Young 大學的計算機科學專業,并于 2005 年 12 月擷取了該大學的計算機工程碩士學位。目前是位于 Beaverton, Ore 的 Stexar Corp. 的工程師。