jmsnell     2002/12/31 12:38:34

  Added:       proposals/jabber/src/com/snellspace/axis/jabber
                        JabberHandler.java JabberTransport.java
                        JabberSender.java JabberConnection.java
                        JabberServer.java
               proposals/jabber/src TestClient.java TestServer.java
                        Test.java
               proposals/jabber/src/com/snellspace/axis/jabber/bootstrap
                        Server.java
  Log:
  Adding sources
  
  Revision  Changes    Path
  1.1                  
xml-axis/proposals/jabber/src/com/snellspace/axis/jabber/JabberHandler.java
  
  Index: JabberHandler.java
  ===================================================================
  package com.snellspace.axis.jabber;
  
  import org.jabber.jabberbeans.Packet;
  
  /**
   * @author James M Snell <[EMAIL PROTECTED]>
   */
  public interface JabberHandler {
  
    public void receivedPacket(
      Packet packet);
  
  }
  
  
  
  1.1                  
xml-axis/proposals/jabber/src/com/snellspace/axis/jabber/JabberTransport.java
  
  Index: JabberTransport.java
  ===================================================================
  package com.snellspace.axis.jabber;
  
  import org.apache.axis.AxisEngine;
  import org.apache.axis.AxisFault;
  import org.apache.axis.MessageContext;
  import org.apache.axis.client.Call;
  import org.apache.axis.client.Transport;
  
  /**
   * @author James M Snell <[EMAIL PROTECTED]>
   */
  public class JabberTransport 
    extends Transport {
  
    public static final String DEFAULT_TRANSPORT_NAME = "JabberSender";
  
    private String to;
  
    public JabberTransport() {
      transportName = DEFAULT_TRANSPORT_NAME;
    }
    
    public JabberTransport(
      String transportName) {
        this.transportName = transportName;
    }
  
    public String getTo() {
      return to;
    }
    
    public void setTo(
      String to) {
        this.to = to;
    }
    
    public void setupMessageContextImpl(
      MessageContext context,
      Call call,
      AxisEngine engine)
        throws AxisFault {
          context.setProperty(
            MessageContext.TRANS_URL,
            getTo());
    }
  
  }
  
  
  
  1.1                  
xml-axis/proposals/jabber/src/com/snellspace/axis/jabber/JabberSender.java
  
  Index: JabberSender.java
  ===================================================================
  package com.snellspace.axis.jabber;
  
  import java.util.Enumeration;
  
  import javax.xml.soap.SOAPException;
  
  import org.apache.axis.AxisFault;
  import org.apache.axis.Constants;
  import org.apache.axis.Message;
  import org.apache.axis.MessageContext;
  import org.apache.axis.components.uuid.UUIDGenFactory;
  import org.apache.axis.handlers.BasicHandler;
  import org.jabber.jabberbeans.InfoQuery;
  import org.jabber.jabberbeans.InfoQueryBuilder;
  import org.jabber.jabberbeans.Packet;
  import org.jabber.jabberbeans.XMLData;
  import org.jabber.jabberbeans.Extension.MessageExtension;
  import org.jabber.jabberbeans.Extension.QueryExtension;
  import org.jabber.jabberbeans.sax.Extension.DefaultExtension;
  import org.jabber.jabberbeans.util.JID;
  
  /**
   * @author James M Snell <[EMAIL PROTECTED]>
   */
  public class JabberSender 
    extends BasicHandler {
  
    public void invoke(
      MessageContext context) 
        throws AxisFault {
          JabberConnection connection = 
            initializeConnection(context);
          Holder holder = new Holder();
          Packet request = 
            createRequestPacketFromMessage(
              context.getRequestMessage(), 
              context);
          connection.send(request, holder);
          try {
            holder.waitForPacket();
          } catch (InterruptedException e) {}
          Packet response = holder.getPacket();
          context.setResponseMessage(
            createResponseMessageFromPacket(
              response, 
              context));
          connection.disconnect();
          connection = null;
    }
  
    private JabberConnection initializeConnection(
      MessageContext context) {
        JID clientID = JID.fromString(context.getUsername());
        String password = context.getPassword();
        JabberConnection connection = new JabberConnection();
        connection.login(clientID, password);
        return connection;
    }
  
    private Packet createRequestPacketFromMessage(
      Message message,
      MessageContext context) {
        Packet packet = null;
        try {
          InfoQueryBuilder iqb = new InfoQueryBuilder();
          iqb.setIdentifier(getID());
          iqb.setType("set");
          iqb.setToAddress(
            JID.fromString(
              context.getStrProp(
                MessageContext.TRANS_URL)));
          iqb.addExtension(new AxisExtension(message));
          packet = iqb.build();
        } catch (InstantiationException ie) {}
        return packet;
    }
  
    private String getID() {
      return UUIDGenFactory.
        getUUIDGen("org.apache.axis.components.uuid.SimpleUUIDGen").nextUUID();
    }
  
    private Message createResponseMessageFromPacket(
      Packet packet,
      MessageContext context) {
        Message message = null;
        if (packet instanceof InfoQuery) {
          InfoQuery iq = (InfoQuery)packet;
          for (
            Enumeration e = iq.Extensions();
            e.hasMoreElements();) {
              DefaultExtension ext = (DefaultExtension)e.nextElement();
              StringBuffer buf = new StringBuffer(ext.toString());
              if (buf.indexOf(Constants.URI_DEFAULT_SOAP_ENV) > 0) {
                  message = new Message(ext.toString());
              } else {
                // ignore non soap stuff for now
              }
          }
        }
        return message;
    }
  
    private class Holder 
      implements JabberHandler {
        private Packet packet;
        public Packet getPacket() {
          return this.packet;
        }
        public synchronized void waitForPacket()
          throws InterruptedException {
            if (packet != null) return;
            wait();
        }
        public synchronized void receivedPacket(
          Packet packet) {
            this.packet = packet;
            notifyAll();
        }
    }
    
    public static class AxisExtension
      extends XMLData 
      implements MessageExtension, QueryExtension {
        
        private Message message;
        
        public AxisExtension(
          Message message) {
            this.message = message;
        }
        
        public void appendItem(
          StringBuffer buffer) {
            try {
              String env = 
                message.getSOAPPart().
                  getEnvelope().toString();
              buffer.append(env);
            } catch (SOAPException e) {}
        }      
    }
  }
  
  
  
  1.1                  
xml-axis/proposals/jabber/src/com/snellspace/axis/jabber/JabberConnection.java
  
  Index: JabberConnection.java
  ===================================================================
  package com.snellspace.axis.jabber;
  
  import java.io.IOException;
  import java.net.InetAddress;
  import java.net.UnknownHostException;
  import java.util.HashMap;
  
  import org.jabber.jabberbeans.ConnectionBean;
  import org.jabber.jabberbeans.ConnectionEvent;
  import org.jabber.jabberbeans.ConnectionListener;
  import org.jabber.jabberbeans.ContentPacket;
  import org.jabber.jabberbeans.InfoQuery;
  import org.jabber.jabberbeans.InfoQueryBuilder;
  import org.jabber.jabberbeans.Packet;
  import org.jabber.jabberbeans.PacketEvent;
  import org.jabber.jabberbeans.PacketListener;
  import org.jabber.jabberbeans.PresenceBuilder;
  import org.jabber.jabberbeans.Extension.IQAuthBuilder;
  import org.jabber.jabberbeans.util.JID;
  
  /**
   * @author James M Snell <[EMAIL PROTECTED]>
   */
  public class JabberConnection
    implements ConnectionListener, PacketListener {
  
    protected ConnectionBean cb;
    protected String loginid;
    protected boolean connected;
    protected HashMap requests = new HashMap();
   
    public void disconnect() {
      cb.disconnect();
      loginid = null;
      connected = false;
    }
  
    public void send(
      Packet packet) {
        send(packet, null);
    }
    
    public void send(
      Packet packet,
      JabberHandler handler) {
        if (packet instanceof InfoQuery) {
          InfoQuery iq = (InfoQuery)packet;
          requests.put(
            iq.getIdentifier(),
            handler);
        }
        cb.send(packet);
    }
  
    public void login(
      String clientID,
      String password) {
        login(JID.fromString(clientID), password);
    }
  
    public void login(
      JID clientID,
      String password) {
        cb = new ConnectionBean();
        try {
          cb.connect(InetAddress.getByName(clientID.getServer()));
        } catch (UnknownHostException e) {
          throw new IllegalArgumentException(); // fix it
        } catch (IOException e) {
          throw new IllegalArgumentException(); // fix it
        }
        cb.addConnectionListener(this);
        cb.addPacketListener(this);
        InfoQueryBuilder iqb = new InfoQueryBuilder();
        IQAuthBuilder iqAuthb = new IQAuthBuilder();
        iqb.setType("set");
        iqAuthb.setUsername(clientID.getUsername());
        iqAuthb.setPassword(password);
        iqAuthb.setResource(clientID.getResource());
        InfoQuery iq = null;
        try {
          iqb.addExtension(iqAuthb.build());
          iq = (InfoQuery)iqb.build();
        } catch (InstantiationException ie) {
          throw new IllegalArgumentException(); // fix it
        }
        loginid = iq.getIdentifier();
        cb.send(iq);
    }
    
    public void receivedPacket(
      PacketEvent event) {
      Packet packet = event.getPacket();
      if (!connected) {
        if (processLogin(packet)) {
          connected = true;
        } else {
          connected = false;
        }
        return;
      }
      processPacket(packet);
    }
  
    protected void processPacket(
      Packet packet) {
        try {
          ContentPacket cp = (ContentPacket)packet;
          JabberHandler handler = 
            (JabberHandler)requests.get(
              cp.getIdentifier());
          if (handler != null) {
            handler.receivedPacket(packet);
          }
        } catch (Exception e) {
          // ignore everything else 
        }
    }
  
    public void connectionChanged(
      ConnectionEvent event) {
        // ignore for now
    }
  
    public void sentPacket(
      PacketEvent event) {
        // ignore for now   
    }
  
    public void sendFailed(
      PacketEvent event) {
        // ignore for now
    }
  
    private boolean processLogin(
      Packet packet) {
        if( !(packet instanceof InfoQuery))
          return false;
        InfoQuery iq=(InfoQuery)packet;       
        if (!iq.getIdentifier().equals(loginid)) 
          return false;
        if(iq.getType().equals("result")) {     
          try {
            PresenceBuilder pb = new PresenceBuilder();
            cb.send(pb.build());
          } catch (InstantiationException e) {
            return false;
          }
        } else {
        if(iq.getType().equals("error")) {
          return false;
        } else {
          return false;
        }
      }       
      return true;
    }
        
  }
  
  
  
  1.1                  
xml-axis/proposals/jabber/src/com/snellspace/axis/jabber/JabberServer.java
  
  Index: JabberServer.java
  ===================================================================
  package com.snellspace.axis.jabber;
  
  import java.util.Enumeration;
  
  import org.apache.axis.AxisEngine;
  import org.apache.axis.AxisFault;
  import org.apache.axis.Constants;
  import org.apache.axis.Message;
  import org.apache.axis.MessageContext;
  import org.apache.axis.server.AxisServer;
  import org.jabber.jabberbeans.InfoQuery;
  import org.jabber.jabberbeans.InfoQueryBuilder;
  import org.jabber.jabberbeans.Packet;
  import org.jabber.jabberbeans.sax.Extension.DefaultExtension;
  import org.jabber.jabberbeans.util.JID;
  
  /**
   * @author James M Snell <[EMAIL PROTECTED]>
   */
  public class JabberServer
    extends JabberConnection {
  
    private static AxisEngine engine;
  
    private String resourceID;
    private String transportName = JabberTransport.DEFAULT_TRANSPORT_NAME;
    
    public static final String JABBER_FROM = "JABBER.FROM";
    public static final String JABBER_TO   = "JABBER.TO";
    public static final String JABBER_ID   = "JABBER.ID";
  
    public JabberServer(
      String identity,
      String password) {
        this(JID.fromString(identity), password);
    }
  
    public JabberServer(
      JID identity,
      String password) {
        resourceID = identity.getResource();
        login(identity, password);
    }
  
    public String getTransportName() {
      return this.transportName;
    }
    
    public void setTransportName(
      String transportName) {
        this.transportName = transportName;
    }
  
    public String getServerID() {
      return this.resourceID;
    }
  
    public void setServerID(
      String id) {
        this.resourceID = id;
    }
  
    protected void processPacket(
      Packet packet) {
        if (packet instanceof InfoQuery) {
          InfoQuery iq = (InfoQuery)packet;
          if ("set".equals(iq.getType())) {
            for (
              Enumeration e = iq.Extensions();
              e.hasMoreElements();) {
                DefaultExtension ext = (DefaultExtension)e.nextElement();
                StringBuffer buffer = new StringBuffer(ext.toString());
                if (buffer.indexOf(Constants.URI_DEFAULT_SOAP_ENV) > 0) {
                  JID from = iq.getFromAddress();
                  JID to = iq.getToAddress();
                  String id = iq.getIdentifier();
                  Message soapMessage = new Message(buffer.toString());
                  try {
                    processMessage(from,to,id,soapMessage);
                  } catch (AxisFault ex) {}
                } else {
                  // ignore for now
                }
            }
          } else {
            // ignore for now
          }
        }
    }  
  
    public static synchronized AxisEngine getAxisEngine() {
      if (engine == null) {
        engine = new AxisServer();
      }
      return engine;
    }
  
    private void processMessage(
      JID from,
      JID to,
      String id,
      Message soapMessage)
        throws AxisFault {
        
          AxisEngine engine = JabberServer.getAxisEngine();
          MessageContext context = 
            new MessageContext(engine);
          context.setProperty(JABBER_FROM, from.toString());
          context.setProperty(JABBER_TO, to.toString());
          context.setProperty(JABBER_ID, id);
          context.setRequestMessage(soapMessage);
          context.setTransportName(getTransportName());
          context.setTargetService(resourceID);
          
          engine.invoke(context);
          
          Message response = context.getResponseMessage();
          
          InfoQueryBuilder iqb = new InfoQueryBuilder();
          iqb.setIdentifier(id);
          iqb.setToAddress(from);
          iqb.setFromAddress(to);
          iqb.setType("result");
          iqb.addExtension(
            new JabberSender.AxisExtension(
              response));
          
          try {
            send(iqb.build());
          } catch (InstantiationException e) {}
    }
  }
  
  
  
  1.1                  xml-axis/proposals/jabber/src/TestClient.java
  
  Index: TestClient.java
  ===================================================================
  import javax.xml.namespace.QName;
  import javax.xml.rpc.ParameterMode;
  import javax.xml.rpc.encoding.XMLType;
  
  import org.apache.axis.client.Call;
  import org.apache.axis.client.Service;
  import org.apache.axis.configuration.XMLStringProvider;
  
  import com.snellspace.axis.jabber.JabberTransport;
  
  /**
   * @author James M Snell <[EMAIL PROTECTED]>
   */
  public class TestClient {
  
    private static final String dep = 
      "<deployment name=\"defaultClientConfig\"" +
      "            xmlns=\"http://xml.apache.org/axis/wsdd/\""; +
      "            xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\";>" +
      " <transport name=\"JabberSender\" 
pivot=\"java:com.snellspace.axis.jabber.JabberSender\" />" +
      "</deployment>";
      
    private static void client() throws Exception {
      JabberTransport transport = new JabberTransport();
      transport.setTo("<someid>@jabber.org/service1");    
      Service service = new Service(new XMLStringProvider(dep));
      Call call = (Call)service.createCall();
      call.setOperationName(new QName("urn:test", "echo"));
      call.addParameter("a", XMLType.XSD_STRING, ParameterMode.IN);
      call.setReturnType(XMLType.XSD_STRING);
      call.setTransport(transport);
      call.setUsername("<someid>[EMAIL PROTECTED]/service2");
      call.setPassword("<somepassword>");
      String s = (String)call.invoke(new String[] {"test"});
      System.out.println(s);
    }
  
    public static void main(
      String[] args) 
        throws Exception {
          client();
    }
  }
  
  
  
  1.1                  xml-axis/proposals/jabber/src/TestServer.java
  
  Index: TestServer.java
  ===================================================================
  
  public class TestServer {
  
    public String echo(String arg) {
  
      StringBuffer buf = new StringBuffer(arg);
      return buf.reverse().toString();
      
    }
  
  }
  
  
  
  1.1                  xml-axis/proposals/jabber/src/Test.java
  
  Index: Test.java
  ===================================================================
  import java.io.ByteArrayInputStream;
  
  import javax.xml.namespace.QName;
  import javax.xml.rpc.ParameterMode;
  import javax.xml.rpc.encoding.XMLType;
  
  import org.apache.axis.client.AdminClient;
  import org.apache.axis.client.Call;
  import org.apache.axis.client.Service;
  import org.apache.axis.configuration.XMLStringProvider;
  import org.apache.axis.server.AxisServer;
  import org.apache.axis.transport.local.LocalTransport;
  
  import com.snellspace.axis.jabber.*;
  
  
  public class Test {
  
    private static final String dep = 
      "<deployment name=\"defaultClientConfig\"" +
      "            xmlns=\"http://xml.apache.org/axis/wsdd/\""; +
      "            xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\";>" +
      " <transport name=\"JabberSender\" 
pivot=\"java:com.snellspace.axis.jabber.JabberSender\" />" +
      "</deployment>";
    private static final String serv =
      "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\""+
      "  xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\";>"+
      "  <service name=\"service1\" provider=\"java:RPC\">"+
      "    <namespace>urn:test</namespace>" +
      "    <parameter name=\"className\" value=\"TestServer\"/>"+
      "    <parameter name=\"allowedMethods\" value=\"*\"/>"+
      "  </service>"+
      "</deployment>";
    private static final String userv =
      "<undeployment xmlns=\"http://xml.apache.org/axis/wsdd/\";>"+
      "  <service name=\"service1\" />"+
      "</undeployment>";
  
    public static void main(String[] args) throws Exception {
      deploy();
      JabberServer service1 = server();
      client();
      undeploy();
      service1.disconnect();
    }
  
    public static JabberServer server() {
      return 
        new JabberServer(
          "<someid>@jabber.org/service1", "knight12");
    }
  
    public static void deploy() 
      throws Exception {
        AxisServer server = (AxisServer)JabberServer.getAxisEngine();
        LocalTransport transport = new LocalTransport(server);
        transport.setRemoteService("AdminService");
        AdminClient client = new AdminClient();
        Call call = client.getCall();
        call.setTransport(transport);
        client.process(new ByteArrayInputStream(serv.getBytes()));
        server.refreshGlobalOptions();
    }
  
    public static void undeploy() 
      throws Exception {
        AxisServer server = (AxisServer)JabberServer.getAxisEngine();
        LocalTransport transport = new LocalTransport(server);
        transport.setRemoteService("AdminService");
        AdminClient client = new AdminClient();
        Call call = client.getCall();
        call.setTransport(transport);
        client.process(new ByteArrayInputStream(userv.getBytes()));
        server.refreshGlobalOptions();
    }
  
    private static void client() throws Exception {
      
      JabberTransport transport = new JabberTransport();
      transport.setTo("<someid>@jabber.org/service1");
      
      Service service = new Service(new XMLStringProvider(dep));
      Call call = (Call)service.createCall();
      call.setOperationName(new QName("urn:test", "echo"));
      call.addParameter("a", XMLType.XSD_STRING, ParameterMode.IN);
      call.setReturnType(XMLType.XSD_STRING);
      //call.setReturnQName(new QName("arg", "urn:test"));
      call.setTransport(transport);
      call.setUsername("<someid>[EMAIL PROTECTED]/service2");
      call.setPassword("<somepassword>");
      
      String s = (String)call.invoke(new String[] {"test"});
      System.out.println(s);
    }
  }
  
  
  
  1.1                  
xml-axis/proposals/jabber/src/com/snellspace/axis/jabber/bootstrap/Server.java
  
  Index: Server.java
  ===================================================================
  
  package com.snellspace.axis.jabber.bootstrap;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.text.MessageFormat;
  import java.text.ParseException;
  import java.util.HashMap;
  import java.util.Iterator;
  
  import org.apache.axis.client.AdminClient;
  import org.apache.axis.client.Call;
  import org.apache.axis.server.AxisServer;
  import org.apache.axis.transport.local.LocalTransport;
  
  import com.snellspace.axis.jabber.JabberServer;
  
  public class Server {
  
    private static HashMap services = new HashMap();
    private static final String START  = "start ";
    private static final String STOP   = "stop ";
    private static final String DEPLOY = "deploy ";
    private static final String EXIT   = "exit";
    private static final String LIST   = "list";
    private static final String HELP   = "help";
    private static final String HELP_  = "?";
    
    private static final String START_PATTERN = "start {0} {1}";
    private static final String STOP_PATTERN  = "stop {0}";
    private static final String DEPLOY_PATTERN = "deploy {0}";
    
    public static void main(
      String[] args)
        throws Exception {
    
        System.out.println("Axis Jabber Server");
        System.out.println("By James Snell <[EMAIL PROTECTED]>");
        System.out.println("type <help> or <?> for usage help");
        menuHandler();
    
    }
    
    private static void menuHandler()
      throws IOException, ParseException {
        BufferedReader br = new BufferedReader(
          new InputStreamReader(System.in));
        for (;;) {
          System.out.print("> ");
          String in = br.readLine();
          if (in.startsWith(HELP) ||
              in.startsWith(HELP_)) {
                showHelp();
          } else if (in.startsWith(START)) {
            try {
              MessageFormat mf = new MessageFormat(START_PATTERN);
              Object[] o = mf.parse(in);
              startService((String)o[0],(String)o[1]);
            } catch (ParseException pe) {
              showHelp();
            }
          } else if (in.startsWith(STOP)) {
            try {
              MessageFormat mf = new MessageFormat(STOP_PATTERN);
              Object[] o = mf.parse(in);
              stopService((String)o[0]);
            } catch (ParseException pe) {
              showHelp();
            }
          } else if (in.startsWith(DEPLOY)) {
            try {
              MessageFormat mf = new MessageFormat(DEPLOY_PATTERN);
              Object[] o = mf.parse(in);
              deploy((String)o[0]);
            } catch (ParseException pe) {
              showHelp();
            }
          } else if (in.startsWith(LIST)) {
            list();
          } else if (in.startsWith(EXIT)) {
            exit();
          } else {
            showHelp();
          }
        }
    }
    
    private static void exit() {
      shutDown();
      System.exit(0);
    }
  
    private static void showHelp() {
      System.out.println("Usage:");
      System.out.println("\tstart [service id] [password]");
      System.out.println("\tstop  [service id]");
      System.out.println("\texit ");
      System.out.println("\tlist ");
      System.out.println("\tdeploy [wsdd url]");
      System.out.println("");
    }
    
    private static void showError(
      String message,
      Exception e) {
        System.out.println(message);
        System.out.println("\t" + e);
    }
    
    private static void startService(
      String identity,
      String password) {
        try {
          System.out.println("Starting <" + identity + ">");
          services.put(
            identity, 
            new JabberServer(
              identity, 
              password));
        } catch (Exception e) {
          showError(
            "CANNOT START SERVICE",e);
        }
    }
    
    private static void stopService(
      String identity) {
        try {
          System.out.println("Stopping <" + identity + ">");
          JabberServer s = (JabberServer)services.get(identity);
          s.disconnect();
          services.remove(identity);
        } catch (Exception e) {
          showError(
            "CANNOT STOP SERVICE",e);
        }
    }
    
    private static void shutDown() {
      try {
        System.out.println("Shutting down...");
        for (
          Iterator i = services.keySet().iterator(); 
          i.hasNext();) {
            stopService((String)i.next());
        }
      } catch (Exception e) {
        showError("PROBLEM SHUTTING DOWN... FORCING EXIT", e);
        System.exit(0); 
      }
    }
    
    private static void list() {
      try {
        System.out.println("Currently Running Services:");
        if (services.size() == 0) 
          System.out.println("\tNo Running Services");
        for (
          Iterator i = services.keySet().iterator();
          i.hasNext();) {
            System.out.println("\t" + i.next() + "");
        }
        System.out.println("");
      } catch (Exception e) {
        showError(
          "PROBLEM LISTING SERVICES", e);
      }
    }
    
    private static void deploy(
      String wsdd) {
        try {
          AxisServer server = (AxisServer)JabberServer.getAxisEngine();
          LocalTransport transport = new LocalTransport(server);
          transport.setRemoteService("AdminService");
          AdminClient client = new AdminClient();
          Call call = client.getCall();
          call.setTransport(transport);
          client.process(wsdd);
          server.refreshGlobalOptions();
        } catch (Exception e) {
          showError(
            "PROBLEM DEPLOYING SERVICE", e);
        }
    }
    
  }
  
  
  


Reply via email to