2010-01-18 28 views
11

tôi đang tạo một dịch vụ web SOAP đơn giản. i am để đảm bảo rằng nó chạy trên một dịch vụ web tomcat.Java: sử dụng điểm cuối để xuất bản dịch vụ web tới máy chủ tomcat

im cố gắng để thực hiện điều này với JAX-WS (xem code)

câu hỏi của tôi là: nào Endpoint.publish sử dụng máy chủ tomcat để lưu trữ này hoặc là nó một loại glassfish mini của máy chủ?

tôi có nên mở rộng UnicastRemoveObject hoặc một cái gì đó tương tự thay thế không?

lý tưởng nó sẽ có thể được đóng gói thành tệp .WAR và được bỏ trong thư mục và chỉ hoạt động.

Dường như nó không hoạt động với máy chủ tomcat đã cài đặt của tôi vì nó cho biết cổng đã được sử dụng. Tôi đang sử dụng Ubuntu duyên với gói tomcat6 cài đặt, nó cũng có thể là doesnt tôi sử dụng có quyền xuất bản cho tomcat chạy trên 8080

tôi hy vọng câu hỏi này là đủ rõ ràng

mẫu mã:

@WebService 
public class UserAttributes { 
    public static void main(String[] args) { 
     UserAttributes instance = new UserAttributes(); 
     Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
      instance); 
    } 

    public string Hello() { 
     return "Hello World"; 
    } 
} 
+0

Việc thực hiện JAX-WS * mặc định * trong JDK sử dụng máy chủ web dựa trên NIO tối thiểu. –

+0

Cảm ơn bạn! có cách nào để nhắm mục tiêu nó đến một máy chủ tomcat đã chạy? – Will

Trả lời

19

Sử dụng máy chủ tomcat để lưu trữ máy chủ này hoặc nó là một loại máy chủ thủy tinh nhỏ?

JAX-WS RI Endpoint.publish API sử dụng theo mặc định một trọng lượng nhẹ HTTP server implementation được bao gồm trong của Sun Java SE 6. Vì vậy, không, nó không sử dụng một GlassFish nhúng hay một Tomcat nhúng và thậm chí ít hơn hiện tại của bạn Cài đặt Tomcat: nó sử dụng một thùng chứa nhúng tức là một thứ gì đó chạy bên trong cùng một JVM. Chỉ cần FYI, tuy nhiên, có thể cắm các triển khai khác miễn là chúng cung cấp Thực hiện Nhà cung cấp Dịch vụ (SPI). Ví dụ, Jetty 6 làm như vậy, xem J2se6HttpServerSPI. Nhưng tôi sẽ không bao gồm tất cả các chi tiết ở đây :)

Nó dường như không hoạt động với máy chủ tomcat đã cài đặt của tôi vì nó cho biết cổng đã được sử dụng.

Như tôi đã nói ở trên, API Enpoint.publish không sử dụng cài đặt Tomcat hiện tại của bạn. Nó sử dụng máy chủ riêng của nó và cho phép bạn triển khai dịch vụ web của bạn mà không cần phải gói và triển khai ứng dụng của bạn. Nó đặc biệt hữu ích trong quá trình phát triển (khi nó tăng tốc độ). Trên thực tế, nó cực kỳ tiện dụng.

Bây giờ, nếu bạn có máy chủ Tomcat đang chạy trên cổng 8082 và nếu bạn cố gắng xuất bản Endpoint bằng cùng một cổng, mọi thứ sẽ không hoạt động như bạn nhận thấy. Sử dụng một cổng khác (và không sử dụng) trong quá trình phát triển.

Và nếu bạn muốn triển khai dịch vụ web của bạn vào bản cài đặt Tomcat hiện tại, bạn sẽ phải gói chúng trong một cuộc chiến và triển khai cuộc chiến này trên Tomcat. Nhưng điều này hoàn toàn khác và không liên quan gì đến việc sử dụng API Endpoint.publish.

+0

cũng giải thích. – atiqkhaled

1

Rất thú vị. Dường như với tôi rằng máy chủ nhúng cũng chứa một công cụ xà phòng để xử lý các tin nhắn xà phòng được gửi đến cổng đó.Đây có phải là động cơ xà phòng được nhúng hay là sử dụng một trong các công cụ xà phòng phổ biến (axis2, cxf, metro)

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