2011-11-24 27 views
5

Tôi đang cố gắng tạo một dự án web rất cơ bản được gọi là "web" bằng MyEclipse và JBoss 5 làm máy chủ ứng dụng. Tôi đã tạo ra một gói được gọi là "các trang" và bên trong nó một servlet gọi là "UserInterface". Vấn đề là khi tôi triển khai dự án và chạy máy chủ, tôi luôn nhận được báo cáo lỗi: HTTP Status 404 - Servlet không có sẵn.Báo cáo lỗi JBoss: Trạng thái HTTP 404 - Servlet không khả dụng

Đây là một phần của web.xml của tôi:

<servlet> 
    <servlet-name>UserInterface</servlet-name> 
    <servlet-class>pages.UserInterface</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>UserInterface</servlet-name> 
    <url-pattern>/UserInterface</url-pattern> 
    </servlet-mapping> 

và tôi đang điều hướng trong trình duyệt để: http://localhost:8080/web/UserInterface

Tôi đang làm gì sai ở đây?

Cảm ơn

+0

Danh sách các tệp trong ứng dụng web được triển khai sẽ hữu ích. Bạn đang triển khai nó như một .war? –

+1

cũng là dự án được triển khai với context = web? bạn có thể truy cập vào localhost: 8080/web không? –

+0

Khi máy chủ khởi động hoặc ứng dụng đang được triển khai, bạn có thấy bất kỳ sự cố nào trong nhật ký hoặc đầu ra của bảng điều khiển không? – Santosh

Trả lời

2

Tôi vẫn không biết điều gì sai, nhưng tôi đã tạo một servlet khác được gọi là người dùng và trong web.xml tôi đã thêm/servlet trước lớp và điều hướng đến nó trong trình duyệt (http: // localhost : 8080/web/servlet/User) và nó hoạt động.

<servlet> 
    <servlet-name>User</servlet-name> 
    <servlet-class>pages.User</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>User</servlet-name> 
    <url-pattern>/servlet/User</url-pattern> 
    </servlet-mapping> 

Cảm ơn mọi người đã giúp đỡ bạn!

2

HTTP Status 404 - Servlet là không có sẵn.

Tải servlet không thành công (nếu servlet không được khai báo đúng trong web.xml hoặc URL sai, thì thay vào đó bạn sẽ thấy "404 - Không tìm thấy tài nguyên"). Đơn giản chỉ cần đặt, <servlet-class> là sai hoặc tệp lớp bê tông không có trong /WEB-INF/classes.

+0

Kết quả ngoại lệ servlet có lỗi 500 không? –

+0

@Andrei: chỉ khi được ném bởi 'service()', 'doGet()' và cứ thế. Nhưng trong trường hợp này servlet đơn giản là không có sẵn. Vùng chứa nhận biết được ánh xạ URL servlet, nhưng không có một cá thể làm việc hợp lệ trong tầm tay, vì việc khởi tạo/khởi tạo đã thất bại. – BalusC

+0

Hm, yeah nhưng tôi khá chắc chắn từ mã hóa crappy của riêng tôi rằng nếu tôi, ví dụ có một servlet với phương thức init() overriden ném NPE, thì truy cập servlet đó (trong Jetty chẳng hạn) sẽ trả về một HTTP 500. –

4

404 có nghĩa là URL bạn đang cố truy cập không trỏ đến tài nguyên hiện có trên máy chủ của bạn. Kiểm tra lại địa chỉ, có thể phần "web" (từ http://localhost:8080/web/UserInterface) không chính xác vì có thể ứng dụng không được triển khai với tên đó. Theo mặc định, tên ngữ cảnh ứng dụng được lấy từ tên tệp của tệp ".war" như tệp của bạn là "myApp.war", ứng dụng của bạn sẽ có sẵn tại http://localhost:8080/myApp

Ngoài ra, nếu bạn đang triển khai chiến tranh bên trong một file .ear rằng tập tin tai sẽ chứa một mô tả application.xml aplpication mà có thể ánh xạ tập tin ứng dụng của bạn vào một bối cảnh cụ thể, không có vấn đề gì filename .WAR là, một cái gì đó như:

<module> 
    <web> 
     <web-uri>myApp.war</web-uri> 
     <context-root>theApp</context-root> 
    </web> 
    </module> 

Cuối cùng , nếu bạn đang tự động triển khai từ Eclipse với trình kết nối Eclipse JBoss, đôi khi có lỗi và không thực sự triển khai ứng dụng của bạn đúng cách (mặc dù bản thân ứng dụng đó là tốt). Nếu đúng như vậy, hãy thử triển khai thủ công .war đến một máy chủ ứng dụng và kiểm tra nó theo cách đó.

+1

Đọc tin nhắn 404. URL chắc chắn không sai. – BalusC

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