Chúng tôi đã viết một dịch vụ WCF được một cửa hàng Java sử dụng, đang sử dụng CXF để tạo các bộ điều hợp. Chúng tôi không quen thuộc với Java, nhưng đã tiếp xúc với dịch vụ bằng cách sử dụng basicHttpBinding, SSL và xác thực cơ bản. Kiểm tra tích hợp cho thấy một máy khách .NET có thể sử dụng dịch vụ tốt. Tuy nhiên, cửa hàng Java đang gặp khó khăn khi sử dụng dịch vụ. Cụ thể, chúng nhận được lỗi JAXB sau: Hai khai báo gây ra một xung đột trong lớp ObjectFactory. Điều này thường xảy ra nếu 2 hoạt động có cùng tên và không gian tên khi CXF cố gắng tạo các lớp bộ điều hợp.Cách tốt nhất để trưng ra một dịch vụ WCF để nó có thể dễ dàng được tiêu thụ từ Java/CXF là gì?
Chúng tôi không thể tìm thấy bất kỳ loại hoặc tên hoạt động nào sẽ gây ra bất kỳ loại xung đột nào. Chúng tôi đã đảm bảo rằng tất cả các loại tùy chỉnh chỉ định một không gian tên và tempuri.org không được chỉ định ở bất kỳ đâu trong WSDL. Cửa hàng Java nghi ngờ lỗi này là do WSDL được tạo có chứa < xsd: các phần tử nhập.
Vì vậy, câu hỏi của tôi:
- Có cách nào tốt hơn CXF cho các cửa hàng Java tiêu thụ các dịch vụ WCF? Project Tango trông thú vị, nhưng tôi không biết đủ để bảo họ xem xét sử dụng nó. CXF có phải là tiêu chuẩn defacto trong Java không?
- BasicHttpBinding/SSL/Basic Auth được MS đề xuất cho các tình huống interop, nhưng máy khách vẫn có vẻ có vấn đề về interop. Chúng ta có nên xem xét các ràng buộc hoặc cài đặt khác để làm cho việc này dễ tiêu thụ hơn không?
- Có cách nào để định cấu hình WCF để luôn xuất ra một WDSL không có lược đồ nhập không?
Để ghi lại, có các loại trong dịch vụ WCF của tôi có tên là "OperationNameRequest" và "OperationNameResponse", xung đột với các loại cùng tên do java tạo ra. Java dev có thể sửa lỗi bằng cách xoa bóp WSDL. – Daniel