私は Jax-ws を初めて使用し、シンプルなクライアント/サーバー アプリケーションを使用しています。インターフェイス、それを実装する Scheduler クラス、およびスケジューラを localhost に発行する発行者クラスがあります。スタブを生成し、スケジューラでメソッドを呼び出すクライアントを持っています。今のところ問題ありません。
Scheduler クラスを変更したいときに問題が発生します。変更を保存してクライアントを再度実行すると、古いスケジューラがクライアントによって使用されます。再度公開しようとすると、ポートが既に使用されているため、BindException が発生します (使用していることはわかっています)。私が見つけた唯一の回避策は、毎回異なるポートに公開し、スタブを新しいポートに更新することですが、これはひどい解決策です。
コードを更新し、クライアントに新しい変更を使用させる簡単な方法はありますか?
これが私のクライアントです:
package assignment2;
import assignment2.endpoint.SchedulerInterface;
import assignment2.endpoint.SchedulerService;
public class Client {
public static void main(String [] args){
SchedulerService service = new SchedulerService();
SchedulerInterface scheduler = service.getSchedulerPort();
System.out.println(scheduler.getSchedule("Tuesday"));
}
}
そして私の出版社:
package assignment2;
import javax.xml.ws.Endpoint;
import assignment2.endpoint.Scheduler;
public class Publisher {
public static void main(String [] args){
Endpoint.publish("http://localhost:8082/WS/Scheduler", new Scheduler());
}
}
必要に応じて他のコードを提供できます。