Hi Lukas, No, I don't believe you will need to have a name service running for the example that you mentioned. This should be a straight forward setup using the Yoko binding and an a CORBA client.
Usually, you get a BAD_PARAM exception when doing a narrow on an object which is of the wrong type, for example, trying to narrow something as a calculator when it is not. However, I don't see why this could happening yet in your code. I will try and set up a small test using the code you provided to see if I can see what is happening. I'll let you know what I find out. Cheers, Darren On 7/19/07, Lukas Zapletal <[EMAIL PROTECTED]> wrote:
I googled that Name Server may not have started. Proposed solution is to start the Java IDL Name Server: <JDK1.4 Home>/bin/ tnameserv -ORBInitialPort 1050 Do I need the nameserver when accessing WS in CXF/Yoko Binding from JacORB? I will try to run the JacORBs naming service. I am sorry I am new to CORBA. Thanks for help LZ 2007/7/19, Lukas Zapletal <[EMAIL PROTECTED]>: > Hello all! > > I have problem with calling WS from corba. My interface is simple: > > module com { > module pikeelectronic { > module calc { > > interface Calculator { > double add(in double x, in double y); > double sub(in double x, in double y); > double mul(in double x, in double y); > double div(in double x, in double y); > }; > }; > }; > }; > > I have converted this to WSDL and created a WS using CXF wsdl2java tools: > > > /** > * Please modify this class to meet your needs > * This class is not complete > */ > > package com.pikeelectronic.calc.wsserver; > > import java.util.logging.Logger; > import javax.jws.WebMethod; > import javax.jws.WebResult; > import javax.xml.ws.RequestWrapper; > import javax.xml.ws.ResponseWrapper; > > /** > * This class was generated by the CXF 2.0-incubator > * Wed Jul 18 14:05:16 CEST 2007 > * Generated source version: 2.0-incubator > * > */ > > @javax.jws.WebService(name = "ComPikeelectronicCalcCalculator", > serviceName = "com.pikeelectronic.calc.CalculatorCORBAService", > portName = " com.pikeelectronic.calc.CalculatorCORBAPort", > targetNamespace = > "http://schemas.apache.org/yoko/idl/calc", > wsdlLocation = "file:calc.wsdl" , > endpointInterface = > "com.pikeelectronic.calc.wsserver.ComPikeelectronicCalcCalculator") > > public class ComPikeelectronicCalcCalculatorImpl implements > ComPikeelectronicCalcCalculator { > > private static final Logger LOG = > Logger.getLogger( ComPikeelectronicCalcCalculatorImpl.class.getPackage().getName()); > > /* (non-Javadoc) > * @see com.pikeelectronic.calc.wsserver.ComPikeelectronicCalcCalculator#sub (double > x ,)double y )* > */ > public double sub( > double x, > double y > ) > { > LOG.info("Executing operation sub"); > return x - y; > } > > /* (non-Javadoc) > * @see com.pikeelectronic.calc.wsserver.ComPikeelectronicCalcCalculator#div (double > x ,)double y )* > */ > public double div( > double x, > double y > ) > { > LOG.info("Executing operation div"); > return x / y; > } > > /* (non-Javadoc) > * @see com.pikeelectronic.calc.wsserver.ComPikeelectronicCalcCalculator#mul (double > x ,)double y )* > */ > public double mul( > double x, > double y > ) > { > LOG.info("Executing operation mul"); > return x * y; > } > > /* (non-Javadoc) > * @see com.pikeelectronic.calc.wsserver.ComPikeelectronicCalcCalculator#add (double > x ,)double y )* > */ > public double add( > double x, > double y > ) > { > LOG.info("Executing operation add"); > return x + y; > } > > } > > I have implemented a client in JacORB: > > package com.pikeelectronic.calc.CORBAClient; > > /** > * An example for using the Dynamic Invocation Interface > */ > //import org.omg.CosNaming.*; > > public class Client > { > public static void main( String[] args ) > { > org.omg.CORBA.ORB orb = null; > > try > { > orb = org.omg.CORBA.ORB.init(args,null); > > org.omg.CORBA.Object obj = > orb.string_to_object("corbaloc::192.168.3.230:40000/calc"); > > /*org.omg.CORBA.Object object = orb.resolve_initial_references( > "NameService" ); > NamingContext context = NamingContextHelper.narrow( object );*/ > > Calculator c = CalculatorHelper.narrow(obj); > > System.out.println("Initialize ready....."); > > System.out.println("2 + 2 = " + c.add((double)2, (double)2)); > System.out.println("2 * 2 = " + c.mul((double)2, (double)2)); > System.out.println("2 / 2 = " + c.div((double)2, (double)2)); > System.out.println("2 - 2 = " + c.sub((double)2, (double)2)); > > } > catch (Exception e) > { > e.printStackTrace(); > } > orb.shutdown(false); > } > } > > I run the server (in the CXF standalone mode): > > public class ComPikeelectronicCalcCalculatorServer{ > > protected ComPikeelectronicCalcCalculatorServer() throws Exception { > System.out.println("Starting Server"); > Object implementor = new ComPikeelectronicCalcCalculatorImpl(); > String address = "corbaloc::192.168.3.230:40000/calc"; > Endpoint.publish(address, implementor); > } > > public static void main(String args[]) throws Exception { > new ComPikeelectronicCalcCalculatorServer(); > System.out.println("Server ready..."); > > Thread.sleep(60 * 60 * 1000); > System.out.println("Server exitting"); > System.exit(0); > } > } > > And I run the client. Its giving me this result: > > org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No > at com.pikeelectronic.calc.CORBAClient.CalculatorHelper.narrow( CalculatorHelper.java:60) > at com.pikeelectronic.calc.CORBAClient.Client.main(Client.java :23) > > Whats wrong? Did I miss something? > > -- > Lukas Zapletal > http://lukas.zapletalovi.com > -- Lukas Zapletal http://lukas.zapletalovi.com