2011-01-25 32 views
10

Trong grails, làm cách nào tôi có thể thêm một số mã vào UrlMappings.groovy (ví dụ: println) để tôi có thể tìm ra URI yêu cầu là gì và bản đồ nào đang được nhấn (nếu có)?grails và gỡ lỗi UrlMappings

Bối cảnh:

Trong tình huống này, có hai máy chủ phục vụ việc khác nhau dựa trên phần mở rộng tập tin. Vì vậy, hai máy chủ cần phải luôn luôn thấy phần mở rộng tập tin để xử lý lỗi để tiếp tục. Nếu không, các máy chủ bị lẫn lộn và 1 phục vụ lên một trang 404 thay vì 500 trang của chúng tôi.

Hình ảnh lớn hơn liên quan đến việc trả lời 500 do một cái gì đó giống như một NullPointerException và truy tìm nó thông qua mã để xem những gì đang xảy ra.

tôi thêm mã như sau đó là tại http://jetlet.blogspot.com/2010/08/grails-exception-handling-with-response.html:

"500" (controller: "error", action: "internalError") 

Trong thử nghiệm này, tôi ném một NullPointerException (NPE) vào mục đích. Xử lý 500 được gọi và 500 trang được phân phát khi nhập URL vào thanh địa chỉ của trình duyệt. Tuy nhiên, khi đăng một biểu mẫu lên máy chủ và có mã xử lý phát nổ với mục đích NPE, mã xử lý "500" không được gọi. URL trong hành động của biểu mẫu dường như kết thúc bằng phần mở rộng. Vì vậy, không chắc chắn lý do tại sao sự khác biệt về hành vi giữa GET (URL trình duyệt) và POST (gửi biểu mẫu).

Cảm ơn thông tin chi tiết và suy nghĩ về việc theo dõi việc này!

+0

xin lỗi, từ của bạn khá mơ hồ đối với tôi. Bạn có thể nhớ đưa ra ví dụ chi tiết hơn không? –

+0

Mã để minh họa câu hỏi của bạn sẽ rất được hoan nghênh tại đây – fabien7474

+0

Cảm ơn bạn đã quan tâm đến câu hỏi này và câu trả lời của bạn. Tóm lại, khi tôi làm việc cục bộ trên hộp của tôi với máy chủ duy nhất của tôi, mọi thứ đều hoạt động tốt. Khi gửi một biểu mẫu, mã ném một NullPointerException đi qua mã xử lý lỗi như mong đợi. Khi không có trong hộp của tôi nhưng trong một môi trường có liên quan hơn, tôi nhận được một trang 404. Môi trường có liên quan nhiều hơn này có 1 máy chủ tìm kiếm các phần mở rộng trong một yêu cầu để quyết định có chuyển yêu cầu đến máy chủ số 2. Vào lúc này, tôi cần ai đó có thể theo dõi được những gì đang xảy ra. – finneycanhelp

Trả lời

10

Trong Config.groovy của bạn, bạn có thể sửa đổi cài đặt log4j của bạn cho các sự kiện lập bản đồ url bằng cách thêm

all 'org.codehaus.groovy.grails.web.mapping' 

để thiết lập log4j hiện tại của bạn. tất cả đều là cài đặt tiết kiệm nhất để có thể điều chỉnh lại nếu điều đó bắt đầu cho bạn quá nhiều. Bạn có thể tìm thêm thông tin trong tài liệu chính thức về grails tại đây: http://grails.org/doc/latest/guide/3.%20Configuration.html

+1

Cảm ơn bạn đã đăng nhập! Điều kỳ lạ là tôi không thấy đăng nhập liên quan để xử lý một 500. Nói cách khác, tôi thiết lập http: // localhost: 8080/KataIt/cool/cái gì đó để ném một NullPointerException và sự khác biệt duy nhất tôi thấy giữa mã ném một ngoại lệ và không phải là: errors.GrailsExceptionResolver null và sau đó là dấu vết ngăn xếp và một số thông tin chuyển tiếp giống nhau bất kể bạn có đang ném NPE hay không: filter.UrlMappingsFilter Matched URI [/ cool/something] để ánh xạ URL [/ (*)/(*)? /(*)?], Chuyển tiếp đến [/grails/cool/something.dispatch] với .. finneycanhelp

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