2012-04-02 32 views
5

Di chuyển ứng dụng kế thừa từ WebSphere v.6 sang WebSphere v.8. Web.xml của ứng dụng chỉ chứa các khai báo của các servlet chứ không phải các bản đồ servlet. Tuy nhiên, tất cả các servlet không có bản đồ servlet đều có thể truy cập bằng mẫu url/servlet/[servlet name] mặc định. Tuy nhiên, trên WAS8, nếu web.xml được cập nhật với phiên bản thuộc tính thiết lập để "3.0":WebSphere 8, web.xml version = "3.0", bản đồ servlet mặc định?

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     **version="3.0"**> 

servlets ánh xạ mặc định lỏng lẻo và cần phải được ánh xạ một cách rõ ràng bằng cách khác nó trang 404 không tìm thấy.

Có cách nào trong servlet 3.0 hoặc ít nhất là WebSphere 8, để xác định mẫu url mặc định cho tất cả các servlet không? Có InvokerServlet cho tomcat, có phiên bản nào của nó cho WebSphere v.8 không?

Trả lời

3

Biến các phiên bản cũ hơn của WebSphere đã sử dụng các mô tả ibm-web - *. Xmi độc quyền để xác định các tùy chọn triển khai cụ thể của nhà cung cấp. Tuy nhiên, vì v8.0 hỗ trợ cho các tập tin .xmi đã bị loại bỏ (nhưng vẫn được hỗ trợ cho khả năng tương thích ngược trong các ứng dụng được khai báo là servlet "2.4"). Các ứng dụng cũ tôi đã di cư chứa ibm-web-ext.xmi sau trong WEB-INF:

<?xml version="1.0" encoding="UTF-8"?> 
<com.ibm.ejs.models.base.extensions.webappext:WebAppExtension xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.ibm.ejs.models.base.extensions.webappext="webappext.xmi" xmi:id="WebApp_ID_Ext" reloadingEnabled="true" fileServingEnabled="true" directoryBrowsingEnabled="false" serveServletsByClassnameEnabled="true"> 
    <webApp href="WEB-INF/web.xml#cchange"/> 
    <extendedServlets xmi:id="ServletExtension_1"> 
    <extendedServlet href="WEB-INF/web.xml#Servlet_1"/> 
    </extendedServlets> 
    <jspAttributes xmi:id="JSPAttribute_1" name="keepgenerated" value="true"/> 
    <jspAttributes xmi:id="JSPAttribute_1333518196516" name="reloadEnabled" value="true"/> 
    <jspAttributes xmi:id="JSPAttribute_1333518196517" name="reloadInterval" value="10"/> 
</com.ibm.ejs.models.base.extensions.webappext:WebAppExtension> 

nên thuộc tính serveServletsByClassnameEnabled = "true" làm servlets bản đồ ứng dụng cũ theo tên mà không servlet-mapping. Điều này không được hỗ trợ nếu ứng dụng là servlet 3.0 ..

3

Nhìn vào câu trả lời của bạn có một cách để làm những gì bạn muốn. Đối với Servlet 3.0, tệp ibm-web-ext.xmi được thay thế bằng ibm-web-ext.xml và các cài đặt mà bạn đã đề cập có thể được áp dụng. Dưới đây là một số mẫu mã cho ibm-web-ext.xml file:

<?xml version="1.0" encoding="UTF-8"?><web-ext 
xmlns="http://websphere.ibm.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd" 
version="1.0"> 

<reload-interval value="3"/> 
<enable-directory-browsing value="false"/> 
<enable-file-serving value="true"/> 
<enable-reloading value="true"/> 
<enable-serving-servlets-by-class-name value="true" /></web-ext> 

Để đọc thêm hãy xem EJB 3.0 application bindings overview.

Các vấn đề liên quan