Hi, I am using JacORB only on the client, the server was Yoko. If I generate the stubs with JacORBs tool it works ok - I can comunicate with service implemented in Yoko sucessfuly.
I have other problem: there is no problem to work with JacORB client and Yoko service. The corbaloc protocol works great but I want to try the other direction: JacORB service and Yoko/CXF client. The problem is simple: I am not able to create JacORB service exposed via corbaloc protocol. I do not how to do it. I am trying to use IOR file now (and pass it to Yoko client with "file:./my_ior.txt"), I hope it will be possible. But in near future I will need to use corbaloc protocol... LZ 2007/7/20, Darren Middleman <[EMAIL PROTECTED]>:
Hi Lukas, Just a quick update. I'm still working on trying to reproduce the BAD_PARAM exception using JacORB. So far I have yet to see it and I've also successfully managed to get a JacORB client to talk to a Yoko server. I'll continue to try and reproduce the exception tomorrow. Cheers, Darren On 7/19/07, Darren Middleman < [EMAIL PROTECTED]> wrote: > Hi Lukas, > > I've done the same, using the Sun IDLJ compiler to generate the stubs. In theory, this shouldn't make a difference, since most IDL compilers for Java should produce portable code (part of the IDLToJava language mapping). > > I've tried things here using the Yoko ORB and I'm not seeing any issue so now I'm going to move onto trying to set things up with JacORB. Just a quick question...are you using JacORB for just the client or are have you changed the configuration for the Yoko binding on the server side to use the JacORB ORB classes as well? > > It's interesting to see though that you are still seeing the same exception when doing JacORB Client -> JacORB server. I'll also give this a try to see if I can figure out what is happening. > > > Cheers, > Darren > > > On 7/19/07, Lukas Zapletal < [EMAIL PROTECTED]> wrote: > > Thanks. I have generated my stubs with idlj tool from JDK 6.0. I > > googled that I might have wrong bootclasspath - the ORB is usually > > needed to be in the bootclasspath. So I have added JacORB to > > bootclasspath and it does not work. > > > > It seems it has nothing to do with Yoko. I created JacORB server and I > > am trying to reach it with JacORB client with the same exception :-( > > > > LZ > > > > 2007/7/19, Darren Middleman < [EMAIL PROTECTED]>: > > > 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 > > > > > > > > > > > > > > > > -- > > Lukas Zapletal > > http://lukas.zapletalovi.com > > > >
-- Lukas Zapletal http://lukas.zapletalovi.com