/* * * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistribution in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY * DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR * RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE OR * ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF * THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or * intended for use in the design, construction, operation or * maintenance of any nuclear facility. * */ package hello; import javax.xml.rpc.Stub; import java.io.*; public class HelloClient { protected BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); boolean keepRunning = true; Stub stub; HelloIF hello; String userName; public HelloClient(String inUser) { stub = createProxy(); hello = (HelloIF)stub; userName = inUser; } public static void main(String[] args) { if(args.length != 1) { System.out.println("usage: java HelloClient "); System.exit(1); } HelloClient hc = new HelloClient(args[0]); hc.register(); } //private static Stub createProxy() private Stub createProxy() { // Note: MyHello_Impl is implementation-specific. return (Stub)(new MyHello_Impl().getHelloIFPort()); } public void register() { try { hello.register(userName); new Thread(new KeyboardReader()).start(); new Thread(new RPCReader()).start(); } catch(Exception e) { e.printStackTrace(); } } public void send(JAXMessage msg) { try { boolean value = hello.receive(msg); if(value == false) System.out.println("had problems receiving on the server end"); } catch(Exception e) { e.printStackTrace(); } } public void receive(JAXMessage msg) { System.out.println(msg.getUser()+" - "+msg.getTimeStamp()+" - "+msg.getText()); } public class KeyboardReader implements Runnable { public void run() { String line = ""; try { while(keepRunning) { line = stdIn.readLine(); if(line == null) { break; } JAXMessage msg = new JAXMessage(); msg.setUser(userName); msg.setText(line); send(msg); } } catch(Exception e) { keepRunning = false; } System.exit(0); } } class RPCReader implements Runnable { public void run() { JAXMessage msg = null; try { while(keepRunning) { msg = hello.send(userName); if(msg != null) receive(msg); Thread.sleep(1000); } } catch(Exception e) { keepRunning = false; } System.exit(0); } } }