在 WebSphere Application Server 第 8 版中,有一項與使用字串位址參數的 SipFactory createRequest() 和 createAddress() 方法相關聯的行為變更。
此規則所標示與這個變更相關聯的特定 javax.servlet.sip.SipFactory 方法如下:
- Address createAddress(java.lang.String addr)
- SipServletRequest createRequest(SipApplicationSession appSession,
java.lang.String method,
java.lang.String from,
java.lang.String to)
throws ServletParseException
此規則提供對可能受行為變更影響的程式碼進行檢查的機會。 行為變更的詳細資料如下:
- Feature Pack for Communications Enabled Applications (CEA Feature Pack) 新增了對於「SIP Servlet 規格 1.1,JSR 289」的支援。
- 關於 createRequest() 和 createAddress() 方法,JSR289 API 指出:「... 如果 from 或 to 引數是一個包含參數的 SIP URI,必須用角括弧來括住該 URI。 否則,將會剖析位址,如同參數屬於位址,而不是 URI。"
- 不過,如同最初提供之時,CEA Feature Pack 並沒有遵循 API。
沒有用角括弧括住的參數並不會如上述般執行,而是會被視為 URI 參數。 例如,根據 JSR,
- sip:asaf@ibm.com;param1=1 應該等於
- <sip:asaf@ibm.com>;param1=1,但它卻讀為
- <sip:asaf@ibm.com;param1=1>。
- 在一個 CEA Feature Pack 服務版本中,新增了自訂內容 sip.jsr289.parse.address 來啟用正確的行為。
- 在 WebSphere 8.0 版中,這個行為有了改變,預設行為就是正確的 API 標準行為。
在第 8 版中,如果這個自訂內容設為 false,就會得到原始行為。
如需相關資訊,請參閱文件: