2012-05-09 50 views
5

Tôi đang cố gắng kết nối trình gỡ lỗi tốt nhất của mình với cá thể Glassfish từ xa (bằng remote nghĩa là không chạy trên cùng một máy vật lý và không chỉ trong cùng một máy ảo).Không thể kết nối với Glassfish bằng cách sử dụng bất kỳ trình gỡ lỗi

cấu hình miền glassfish tôi có "debug" cờ kiểm tra và báo cáo server.log trong quá trình startup

-Xdebug 
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9009 

nào chỉ ra (để tâm trí của tôi), gỡ lỗi thực sự là kích hoạt.

Tuy nhiên, khi tôi cố gắng kết nối trình gỡ lỗi, nó không thành công. Phiên sau là ví dụ (được thực hiện với PuTTy):

$ jdb -connect com.sun.jdi.SocketAttach:port=9009 
java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385) 
    at java.net.Socket.connect(Socket.java:529) 
    at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:204) 
    at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98) 
    at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:72) 
    at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358) 
    at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168) 
    at com.sun.tools.example.debug.tty.Env.init(Env.java:64) 
    at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010) 

Fatal error: 
Unable to attach to target VM. 

Điều gì có thể gây ra hành vi đó?

EDIT

Thông báo JDB này dòng lệnh đã được đưa ra như một example of Glassfish debug testing on the web, đây là lý do tại sao tôi đã sử dụng nó

Cũng cần chú ý tôi đang làm phiên JDB debug này tại địa phương (đó là để nói khi được kết nối với máy đó bằng PuTTy, do đó hãy gọi jdb trên máy Glassifh đang chạy).

+1

Bạn có thể chạy 'ps -ef | grep java' như là một kiểm tra sanity nhanh chóng rằng glassfish đang bắt đầu với params jvm của bạn. Ngoài ra một netstat cho nhà nước của cảng đó? – nsfyn55

+1

Khi bạn nói 'bằng cách chạy tôi có nghĩa là không chạy' bạn có nghĩa là điều này 'bởi REMOTE tôi có nghĩa là không chạy'? – vkraemer

+0

@vkraemer Thật vậy. Tôi đã thay đổi câu hỏi cho phù hợp. – Riduidel

Trả lời

0

Vì bạn đang sử dụng cùng một máy, hãy thử jdb -attach 9009 để thay thế.

Nếu cách đó không hiệu quả, hãy xem jdb documentation vì nó sử dụng các tùy chọn rất khác nhau để chuẩn bị VM để gỡ lỗi.

0

Nếu JVM mà bạn muốn gỡ lỗi nằm trên máy từ xa (máy có địa chỉ IP khác), bạn phải bao gồm tên máy chủ hoặc địa chỉ IP như một phần của tùy chọn đính kèm.

jdb -attach <hostname-or-address>:<port-number> 

jdb là thông minh, nhưng nó sẽ không tìm kiếm trên mạng của bạn chỉ để tìm một cổng đang đợi máy khách JPDA.

Bạn có thể muốn xem số document about jdb này.

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