Saya membuat klien layanan web menggunakan JBoss utils (kompatibel dengan JAX-WS) menggunakan 'klien layanan web dari wsdl' Eclipse.
Jadi, satu-satunya hal yang saya sediakan adalah url ke layanan web WSDL.
Sekarang, penyedia layanan web memberi tahu saya untuk mengubah "url akses aplikasi titik akhir klien" dari layanan web.
Apa itu dan bagaimana mengubahnya?
java
web-services
jboss
jax-ws
EugeneP
sumber
sumber
Jawaban:
IMO, penyedia memberi tahu Anda untuk mengubah titik akhir layanan (yaitu, tempat menjangkau layanan web), bukan titik akhir klien (saya tidak mengerti apa yang bisa terjadi). Untuk mengubah titik akhir layanan, pada dasarnya Anda memiliki dua opsi.
Gunakan Penyedia Binding untuk menyetel URL titik akhir
Opsi pertama adalah mengubah nilai
BindingProvider.ENDPOINT_ADDRESS_PROPERTY
propertiBindingProvider
(setiapjavax.xml.ws.BindingProvider
antarmuka mengimplementasikan proxy ):Kekurangannya adalah ini hanya berfungsi jika WSDL asli masih dapat diakses. Tidak direkomendasikan.
Gunakan WSDL untuk mendapatkan URL titik akhir
Opsi kedua adalah mendapatkan URL titik akhir dari WSDL.
sumber
wsimport
alat modern tidak lagi menghasilkan kode denganget[Service]Port
metode. Sebaliknya, panggilget[Service]
dan transmisikan objek yang dihasilkan ke aBindingProvider
untuk menyetel properti semacam ini.Untuk menambahkan beberapa klarifikasi di sini, saat Anda membuat layanan, kelas layanan menggunakan 'wsdlLocation' default, yang disisipkan ke dalamnya saat kelas dibuat dari wsdl. Jadi jika Anda memiliki kelas layanan yang disebut SomeService, dan Anda membuat instance seperti ini:
Jika Anda melihat ke dalam SomeService, Anda akan melihat bahwa konstruktornya terlihat seperti ini:
Jadi jika Anda ingin mengarahkan ke URL lain, Anda cukup menggunakan konstruktor yang mengambil argumen URL (ada 6 konstruktor untuk menyetel qname dan fitur juga). Misalnya, jika Anda telah menyiapkan monitor TCP / IP lokal yang mendengarkan pada port 9999, dan Anda ingin mengalihkan ke URL itu:
dan itu akan memanggil konstruktor ini di dalam layanan:
sumber
Saya tidak akan bertindak sejauh @Femi untuk mengubah properti alamat yang ada. Anda dapat menambahkan layanan baru ke bagian definisi dengan mudah.
Ini tidak memerlukan kompilasi ulang WSDL ke Java dan membuat pembaruan tidak lebih sulit daripada jika Anda menggunakan opsi BindingProvider (yang tidak berfungsi untuk saya btw).
sumber
Untuk mengubah properti alamat akhir, edit file wsdl Anda
sumber