2008-09-15 35 views
12

Tôi đang sử dụng Apache Axis để kết nối ứng dụng Java của tôi với máy chủ web. Tôi sử dụng WSDL2Java để tạo ra các khai đối với tôi, nhưng khi tôi cố gắng sử dụng cuống, tôi nhận được ngoại lệ sau đây:Cấu hình trục ApacheException

org.apache.axis.ConfigurationException: Không có dịch vụ có tên <web service name> có sẵn

bất kỳ ý tưởng nào?

Trả lời

2

Chỉ cần đoán, nhưng có vẻ như thông báo lỗi báo cáo rằng bạn đã để trống tên dịch vụ. Tôi tưởng tượng mã tạo ra thông báo lỗi như sau:

throw new ConfigurationException("No service named" + serviceName + " is available"); 
0

Đây là mã của tôi. Nó dường như làm việc ổn. Bạn đang sử dụng một định vị dịch vụ hoặc chỉ tạo dịch vụ của mình?

SomeServiceLocator locator = new SomeServiceLocator(); 
SomeService service = null; 
try 
{ 
    service = locator.getSomeServiceImplPort(); 
} 
catch (ServiceException e) 
{ 
    e.printStackTrace(); 
} 
0

Tôi không biết phiên bản Axis bạn đang sử dụng nhưng tôi đang sử dụng Axis2 cho cả máy chủ và máy khách và Java2WSDL tạo mặc định điểm cuối cho dịch vụ trên localhost. Nếu bạn tạo sơ khai máy khách với WSDL2Java, hàm tạo mặc định của sơ khai sẽ trỏ đến localhost. Nếu dịch vụ ở điểm cuối khác, bạn phải sử dụng hàm khởi tạo với điểm cuối làm tham số ... Có thể vấn đề không phải là ở tất cả mà như đã nói trên các câu trả lời khác, mà không có WSDL bạn đang sử dụng làm đầu vào WSDL2Java thật khó nói .

19

Theo documentation liên quan đến bằng cách @arnonym, ngoại lệ này có phần gây hiểu nhầm. Trong lần thử đầu tiên để tìm dịch vụ, ConfigurationException bị ném và bị bắt. Nó được ghi lại ở mức DEBUG bởi lớp ConfigurationException. Sau đó, một nỗ lực khác được thực hiện bằng cách sử dụng một phương pháp khác nhau để tìm dịch vụ mà sau đó có thể thành công. Giải pháp cho việc này là chỉ thay đổi cấp độ nhật ký trên lớp ConfigurationException thành INFO trong log4j.properties của bạn:

log4j.logger.org.apache.axis.ConfigurationException = INFO