Câu hỏi Truy tìm yêu cầu / phản hồi XML bằng JAX-WS khi xảy ra lỗi


Tôi muốn đăng nhập yêu cầu gửi xà phòng thô nếu có bất kỳ lỗi nào, tôi đang sử dụng JAX-WS. Bất kỳ trợ giúp sẽ được đánh giá cao.

Có cách nào dễ dàng (aka: không sử dụng proxy) để truy cập XML yêu cầu / phản hồi thô cho một dịch vụ web được xuất bản với thực thi tham chiếu JAX-WS (được bao gồm trong JDK 1.5 và tốt hơn) chỉ khi ngoại lệ xảy ra trong phản hồi? Tôi muốn đăng nhập lại SOAP thô để tôi có thể kiểm tra nó thorugh bất kỳ ứng dụng webservice nào ở giai đoạn sau


20
2018-03-18 10:09


gốc




Các câu trả lời:


Sử dụng

com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true

com.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true

thay vào đó (lưu ý "nội bộ" trong tên gói), điều này đã làm cho các trick cho tôi.

Chúc mừng, Torsten


28
2018-04-13 10:28



đã thay đổi tệp catalina.sh, bao gồm 'nội bộ' nhưng vẫn không thể thấy bất kỳ thay đổi nào trong các tệp nhật ký / catalina.yyyy-MM-dd.log - user665837
.internal. là bắt buộc khi bạn đang sử dụng phiên bản JAX WS có trong JRE, trong khi đó không phải là ".internal". phiên bản được sử dụng, khi bạn sử dụng thư viện JAX WS một cách rõ ràng - Philip Helger
làm thế nào để thêm dấu thời gian, vào thời điểm nào một yêu cầu cụ thể đã đạt đến máy chủ và vào thời điểm máy chủ phản hồi lại? - ChandraBhan Singh


Chỉ nghĩ rằng tôi sẽ đề cập đến điều này:

Câu hỏi khi sử dụng tên thuộc tính với internal trong đó và khi nào không?

Nếu bạn đọc Bản đồ Metro nó sẽ cho bạn biết để sử dụng:

trên máy khách:

com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

trên máy chủ:

com.sun.xml.ws.transport.http.HttpAdapter.dump=true

Tuy nhiên: Dường như với tôi rằng khi thư viện RI JAX-WS được đưa vào như là tiêu chuẩn với JDK (điều này là với Java 6) thì Sun phải đổi tên tên thuộc tính để bao gồm 'nội bộ'. Vì vậy, nếu bạn đang sử dụng JAX-WS RI khi nó đi kèm với JDK, thì bạn phải hãy chắc chắn thêm internal đến tên thuộc tính. Nếu không nó sẽ không hoạt động. Nói cách khác, bạn cần phải sử dụng:

trên máy khách:

com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true

trên máy chủ:

com.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true

Mặt khác, nếu bạn đang sử dụng phiên bản độc lập của JAX-WS RI (hoặc của toàn bộ Metro) thì tôi đoán bạn nên sử dụng tên thuộc tính không có các internal.

Tôi sẽ rất vui nếu ai đó có kiến ​​thức bên trong về điều này và có thể nói nếu điều này là đúng hay không.


24
2018-06-13 10:49





Ngoài câu trả lời của Torsten

com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump = true

Hãy chắc chắn rằng bạn thiết lập điều này trước khi instantiating đối tượng WebServiceClient (một trong đó mở rộng dịch vụ)


3
2017-11-23 10:54





Điều đầu tiên bạn có thể muốn thử là sử dụng một hoặc cả hai thuộc tính hệ thống sau:

Khách hàng:

com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

Máy chủ:

com.sun.xml.ws.transport.http.HttpAdapter.dump=true

2
2018-03-18 18:56



Tôi đã thêm các thuộc tính ở trên vào tệp catalina.properties của tôi trong máy chủ tomcat của tôi, nhưng không thể thấy bất kỳ nhật ký nào được cập nhật, vui lòng thông báo - user665837
đã thêm vào catalina.sh của tôi trên JAVA_OPTS nhưng không thể thấy bất kỳ thay đổi nào - user665837
Không thay đổi catalina.properties. Bạn đang thiết lập như thế nào JAVA_OPTS? Việc ghi nhật ký sẽ được xuất qua System.out. - kschneid
Sau đây là dòng JAVA_OPTS trong tệp catalina.sh của tôi JAVA_OPTS = "- Dcom.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace = false -Djava.awt.headless = true -Dfile.encoding = UTF-8 -server -Xms512m -Xmx1024m -XX: NewSize = 256m -XX: MaxNewSize = 256m -XX: PermSize = 256m -XX: MaxPermSize = 256m -XX: + DisableExplicitGC -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump = true -Dcom.sun.xml.ws.transport.http.HttpAdapter.dump = true " - user665837
... và không có gì hiển thị trong nhật ký / catalina.out? Tôi cho rằng nó sẽ là tốt để biết phiên bản JDK và Tomcat bạn đang sử dụng ... - kschneid


Tôi nghĩ rằng những gì bạn cần là một người xử lý, xem: http://jax-ws.java.net/articles/handlers_introduction.html
Với trình xử lý, bạn có thể chặn cuộc gọi dịch vụ web và có quyền truy cập vào tất cả thông điệp SOAP.


1
2018-03-30 09:04





Điều này làm việc cho tôi:

-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

1
2017-10-27 12:13





Nếu bạn làm việc với Jboss 6.1 và bạn muốn in các bản ghi cho các lớp do JAX-WS tạo ra, yêu cầu tới dịch vụ web SOAP, Mở tập tin /home/oracle/jboss-eap-6.1/bin/standalone.sh chú thích: hãy đi nơi bạn đã cài đặt jboss

Bạn sẽ tìm thấy một cái gì đó như thế này

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n"

Thay đổi nó thành hình bên dưới

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n"

Ngoài ra, hãy đảm bảo bạn bật gỡ lỗi

DEBUG_MODE=true

1
2018-04-14 20:32