2013-09-23 87 views
5

Tôi đang sử dụng tham số wsimport -clientjar để xuất WebService của tôi vào một cái bình.wsimport -clientjar tạo các lớp trong (gói mặc định)

>wsimport -d C:\webservice -keep -clientjar webservice.jar http://localhost:8080/WebService?wsdl 

Thư mục có mã nguồn (.java files) và webservice.jar được tạo.

Các jar trông như thế này:

com 
    | 
    company 
     | 
     webservice 
       | 
       a bunch of .class files 

META-INF 
     | 
     wsdl 
      | 
      wsdl file 

Tuy nhiên, khi tôi đặt nó trên WEB-INF thư mục/lib trong dự án của tôi, các lớp học đang trong (gói mặc định) và được đặt tên như

com\company\webservice\file.class 

Tôi không hiểu tại sao. Tôi cũng đã sử dụng tham số -p để chỉ định tên gói nhưng nó không hoạt động.

Bất kỳ manh mối nào?

+0

giống tại đây. bất kì manh mối nào? – inquisitive

+0

khi tôi sử dụng tùy chọn '-clientjar' bình được tạo ra do kết quả chứa ** chỉ ** thư mục META-INF. – peterh

Trả lời

0

Tôi đã gặp vấn đề tương tự. Cuối cùng quyết định không sử dụng tùy chọn -clientjar và tạo jar bằng tay với jar.exe và hoạt động.

0

Tôi đã sử dụng -clientjar để nó sẽ thực hiện tất cả công việc cho tôi, nhưng đã sử dụng trình lưu trữ tệp yêu thích của tôi để mở và đóng lại.

2

Tôi nghĩ rằng vấn đề ở đây là tùy chọn -clientjar có nghĩa là cho một mục đích hoàn toàn khác với OP mong đợi.

Mục đích của tùy chọn -clientjar là nhúng bản sao WSDL bên trong các tạo phẩm được tạo để nó có thể trở thành một phần của tệp jar của ứng dụng. Lợi ích của việc có một WSDL đi kèm (và thực sự sử dụng nó tất nhiên) là người tiêu dùng dịch vụ web không phải thực hiện cuộc gọi đến điểm cuối để tải xuống WSDL mỗi khi nó khởi tạo chính nó.

Links:

https://weblogs.java.net/blog/ramapulavarthi/archive/2010/09/03/wsimport-clientjar-option-ease-client-side-web-service-progra

Using jaxws-maven-plugin with -clientjar option

1

1.) Unzip/unjar clientjar

2.) jar tập tin sử dụng

jar cvf <jarName>.jar <root_folders> 

dụ:

jar cvf weather.jar com META_INF 
2

Có hai lựa chọn để đạt được điều này, cả hai hoạt động như một sự quyến rũ. Và cả hai tùy chọn có thể được tự động từ ant \ gradle bạn đặt tên cho nó.

1.To sử dụng -clientjar và sau đó để đóng gói lại các nguồn

2.Manually chèn wsdl vào jar và tùy chỉnh URL wsdLlocation

Giả sử bạn có C: \ WSDL \ SO \ Stas.wsdl (Tôi đã chạy trên windows)

CD C:\WSDL\SO\ 

tùy chọn đầu tiên

C:\WSDL\SO>wsimport -clientjar StasWebServiceClient.jar stas.wsdl 

Điều này tạo ra file jar StasWebServiceClient.jar, nhưng khi nhập nó làm lu mờ, các nguồn không thể nhập cảng, vì vấn đề chủ đề (gói mặc định).

=> Giải nén file jar vào thư mục hiện tại, bạn có thể sử dụng 7zip, hoặc bất kỳ công cụ zip tuyệt vời khác, hoặc bạn có thể chạy

C:\WSDL\SO>jar xf StasWebServiceClient.jar 

để giải nén jar.

thư mục hệ thống cấp bậc sẽ giống như

C:\WSDL\SO\META-INF 

C:\WSDL\SO\stas.wsdl(original wsdl) 

C:\WSDL\SO\StasWebServiceClient.jar(generated jar file) 

C:\WSDL\SO\META-INF\wsdl(created by -clientjar) 

C:\WSDL\SO\META-INF\wsdl\stas.wsdl(copied by -clientjar) 

C:\WSDL\SO\com\... 

/* all generated classes\sources */ 

C:\WSDL\SO\com\... 

=> Do

C:\WSDL\SO>jar -cvf StasWebServiceClientCorrect.jar com META-INF 

này sẽ tạo ra một lọ, StasWebServiceClientCorrect.jar, mà bây giờ có bao bì đúng.

tùy chọn thứ hai

=> Run wsimport

C:\WSDL\SO>wsimport -keep stas.wsdl 

để tạo mã .Tôi luôn muốn có tùy chọn -keep ở đó, nhưng đó là tùy thuộc vào bạn.

=> tạo thư mục META-INF

C:\WSDL\SO>mkdir META-INF 

=> Tạo META-INF/wsdl thư mục

C:\WSDL\SO>cd META-INF 




C:\WSDL\SO\META-INF>mkdir wsdl 

=> đi một thư mục lên.

C:\WSDL\SO\META-INF>cd .. 

=> Sao chép tập tin stas.wsdl vào META-INF \ wsdl \ stas.wsdl

C:\WSDL\SO>copy stas.wsdl META-INF\wsdl\stas.wsdl 

=> Tạo một kho lưu trữ jar

C:\WSDL\SO>jar -cvf StasWebServiceClient.jar com META-INF 

nhập jar để không gian làm việc. Khi bạn sẽ tạo cuộc gọi thực tế cho dịch vụ, hãy sử dụng:

StasService stasService = new StasService(StasService.class.getClassLoader().getResource("META-INF/wsdl/stas.wsdl"))