Tôi muốn chia sẻ một đối tượng giữa các servlet và dịch vụ web của tôi (JAX-WS) bằng cách lưu trữ nó như là một thuộc tính bối cảnh servlet. Nhưng làm thế nào tôi có thể lấy bối cảnh servlet từ một dịch vụ web?Tôi làm cách nào để truy cập ServletContext từ bên trong dịch vụ web JAX-WS?
37
A
Trả lời
40
Ngữ cảnh servlet được JAX-WS cung cấp thông qua ngữ cảnh tin nhắn, có thể được truy xuất bằng ngữ cảnh dịch vụ web. Chèn các thành viên sau đây sẽ gây JAX-WS để tiêm một tham chiếu đến bối cảnh dịch vụ web vào dịch vụ web của bạn:
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
...
@Resource
private WebServiceContext context;
Sau đó, bạn có thể truy cập vào bối cảnh servlet sử dụng:
ServletContext servletContext =
(ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
0
Nếu bạn sử dụng Maven thêm phụ thuộc này !!!
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
Vì vậy, tôi giải quyết cho lỗi xung đột tránh cho get ServletContext INFO :
Và trong phương pháp lớp tôi sử dụng
@WebService(endpointInterface = "choice.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
@Resource
private WebServiceContext context;
public String sayHi(String text) {
HttpServletRequest request =(HttpServletRequest) context.getMessageContext().get(MessageContext.SERVLET_REQUEST);
System.out.println(request.getContextPath());
Các vấn đề liên quan
- 1. Truy cập FacesContext từ Dịch vụ Web
- 2. Truy cập dịch vụ web từ GWT
- 3. Cách truy cập dịch vụ web từ PowerShell?
- 4. Tôi làm cách nào để truy xuất ID phiên từ bên trong dịch vụ web JAX-RS?
- 5. Làm cách nào để đảm bảo quyền truy cập vào dịch vụ web của tôi chỉ từ mã của tôi?
- 6. Làm thế nào để truy cập các dịch vụ khác bên trong một FormType của Symfony?
- 7. dịch vụ truy cập bên trong một lớp thông thường
- 8. Tôi làm cách nào để kiểm tra dịch vụ web?
- 9. Làm cách nào để cung cấp dịch vụ web cho quyền truy cập nhiều miền?
- 10. Tôi làm cách nào để truy cập các dịch vụ của thiết bị UPnP?
- 11. Cách truy cập các dịch vụ SOAP từ iPhone
- 12. Apache: làm cách nào để truy cập trang web của tôi từ máy tính bên ngoài mạng của tôi?
- 13. Tôi làm cách nào để gọi dịch vụ web từ iSeries COBOL?
- 14. Truy cập các mục Sitecore qua dịch vụ web .NET
- 15. Làm cách nào để tôi trả lại XML thuần túy từ dịch vụ web asmx?
- 16. Tôi làm cách nào để gọi dịch vụ web từ javascript
- 17. symfony2: cách truy cập dịch vụ từ mẫu
- 18. Lỗi khi truy cập Dịch vụ Web với SSL
- 19. Symfony2-Làm thế nào để sử dụng truy cập một dịch vụ từ bên ngoài của một bộ điều khiển
- 20. Gọi dịch vụ web json bên ngoài từ asp.net C#
- 21. Làm cách nào để truy cập trang web của tôi (IIS) từ internet?
- 22. Phiên truy cập trong dịch vụ WCF từ WebHttpBinding
- 23. Làm cách nào để xác thực đối với Active Directory từ mã dịch vụ web ASP.NET?
- 24. Gọi một dịch vụ web bên ngoài từ một servlet
- 25. Tôi làm cách nào để sử dụng api web dưới dạng dịch vụ web?
- 26. Truy cập dịch vụ Azure MySQL
- 27. Làm cách nào để nhận được chứng nhận X509Certificate từ máy khách trong dịch vụ web?
- 28. Làm cách nào để tìm URL của dịch vụ web của tôi?
- 29. Tôi làm cách nào để kiểm tra dịch vụ WCF?
- 30. PowerShell + WebAdministration - Làm cách nào để truy cập trang web từ ứng dụng web?
Nếu bạn đang cố gắng này trên một chồng JBoss EAP, và bạn bắt đầu bằng cách tạo một dự án Seam bằng cách sử dụng New Project Wizard trong JBoss Developer Studio, bạn kết thúc với một tệp commons-annotations.jar trong WEB-INF/lib của bạn (có chứa, trong số những người khác, chú thích @Resource). Kết quả cuối cùng là WebServiceContext của bạn không nhận được đầy, và bạn nhận được một NullPointerException. Đối với chúng tôi, giải pháp đơn giản là xóa commons-annotations.jar, để đảm bảo rằng phiên bản JBoss đi kèm đã được sử dụng. Sau đó, mọi thứ đã đi bơi. Cảm ơn câu trả lời tuyệt vời, một phao cứu sinh thực sự! –
Đã lưu ngày của tôi, nhưng thiếu hàng nhập khẩu mà @pihentagy đã đăng. –
Có bất kỳ tài nguyên tiêm nào khác ngoài ngữ cảnh dịch vụ web không? –