No-one seems to want to talk about it, I had to work it all out from 4 billion newsgroup postings saying you can, you can't you shouldnt, you musn't etc.

In the code below, I just added a main method to my conventional ws, so I can still use it inside an Axis container, but when needed I can
run it in stand-alone mode.
Note, for some reason known best to the Axis gods, the init(context) method will always have a null context, so you'll need some other solution
for start-up config if your were relying on this Context object from Axis...


Here's a direct copy paste of how I do it.
Note I don't use a deployment descriptor file, I just use it as an ugly string embedded in the code - maybe you'd prefer to
use your existing file:


   public static final void main(String args[]) {
   try {
       org.apache.log4j.BasicConfigurator.configure();

String deploymentStr = "<deployment xmlns=\"http://xml.apache.org/axis/wsdd/\"; xmlns:java=\"http://xml.apache.org/axis/wsdd/providers/java\";> <!-- Services from SOAPControllerService WSDL service --> <service name=\"SOAPController\" provider=\"java:RPC\" style=\"rpc\" use=\"encoded\"> <parameter name=\"wsdlTargetNamespace\" value=\"urn:controller.mypackage.mycompany.com\"/> <parameter name=\"wsdlServiceElement\" value=\"SOAPControllerService\"/> <parameter name=\"wsdlServicePort\" value=\"SOAPController\"/> <parameter name=\"className\" value=\"com.mycompany.mypackage.controller.SOAPControllerSOAPBindingImpl\"/> <parameter name=\"wsdlPortType\" value=\"SOAPController\"/> <parameter name=\"scope\" value=\"Application\"/> <operation name=\"ticketStart\" qname=\"operNS:ticketStart\" xmlns:operNS=\"urn:controller.mypackage.mycompany.com/binding\" returnQName=\"return\" returnType=\"rtns:string\" xmlns:rtns=\"http://www.w3.org/2001/XMLSchema\"; > <parameter name=\"ticket\" type=\"tns:string\" xmlns:tns=\"http://www.w3.org/2001/XMLSchema\"/> </operation> <operation name=\"ticketStatus\" qname=\"operNS:ticketStatus\" xmlns:operNS=\"urn:controller.mypackage.mycompany.com/binding\" returnQName=\"return\" returnType=\"rtns:string\" xmlns:rtns=\"http://www.w3.org/2001/XMLSchema\"; > <parameter name=\"ticket\" type=\"tns:string\" xmlns:tns=\"http://www.w3.org/2001/XMLSchema\"/> </operation> <operation name=\"ticketResult\" qname=\"operNS:ticketResult\" xmlns:operNS=\"urn:controller.mypackage.mycompany.com/binding\" returnQName=\"return\" returnType=\"rtns:string\" xmlns:rtns=\"http://www.w3.org/2001/XMLSchema\"; > <parameter name=\"ticket\" type=\"tns:string\" xmlns:tns=\"http://www.w3.org/2001/XMLSchema\"/> </operation> <operation name=\"ticketCancel\" qname=\"operNS:ticketCancel\" xmlns:operNS=\"urn:controller.mypackage.mycompany.com/binding\" returnQName=\"return\" returnType=\"rtns:string\" xmlns:rtns=\"http://www.w3.org/2001/XMLSchema\"; > <parameter name=\"ticket\" type=\"tns:string\" xmlns:tns=\"http://www.w3.org/2001/XMLSchema\"/> </operation> <operation name=\"ticketEnd\" qname=\"operNS:ticketEnd\" xmlns:operNS=\"urn:controller.mypackage.mycompany.com/binding\" returnQName=\"return\" returnType=\"rtns:string\" xmlns:rtns=\"http://www.w3.org/2001/XMLSchema\"; > <parameter name=\"ticket\" type=\"tns:string\" xmlns:tns=\"http://www.w3.org/2001/XMLSchema\"/> </operation> <parameter name=\"allowedMethods\" value=\"ticketEnd ticketResult ticketStatus ticketStart ticketCancel\"/> </service></deployment>";
InputStream deploymentDescriptorStream = new ByteArrayInputStream(deploymentStr.getBytes());
// start the Axis http server
org.apache.axis.transport.http.SimpleAxisServer server;
logger.info("Creating Axis server");
server = new org.apache.axis.transport.http.SimpleAxisServer();


int port = Integer.parseInt(System.getProperty(PropertyNames.mypackageControllerRPCPort,
PropertyNames.mypackageControllerRPCPortDefault));
logger.info("Opening server on port "+port);
ServerSocket ss = new ServerSocket(port);
server.setServerSocket(ss);
server.start(true);


// now deploy our Controller web service
logger.info("Creating AdminClient");
org.apache.axis.client.AdminClient adminClient;
adminClient = new org.apache.axis.client.AdminClient();
logger.info("Deploying Controller server web service");
adminClient.process(new org.apache.axis.utils.Options(new String[] {"-ddd","-tlocal"}),
deploymentDescriptorStream);
logger.info("Waiting for connections....");


   }
   catch (Throwable t) {
       t.printStackTrace();
   }

// this loop prevents JVM from exiting, which Ant seems to do if it reaches here.
try {
while (1 < 2) {
Thread.sleep(60000);
}
}
catch (Throwable t) {
t.printStackTrace();
}


}

Daire Treanor wrote:

Hi,

Could somebody please tell me how to access services using a standalone java application that uses the SimpleAxisServer?
I can create the SimpleAxisServer just fine by doing the following


SimpleAxisServer axisServer = new SimpleAxisServer();

try{
    axisServer.setServerSocket(new ServerSocket(50020));
    axisServer.start();
 }
catch(IOException ioe) {
ioe.printStackTrace();
}
catch(Exception e){
e.printStackTrace();
}

My problem is how do I let the server instance know where the services are to be found and what services are available etc.


Regards, D�ire Treanor





Reply via email to