[MOBY-dev] Deploy jMoby Service

Martin Senger senger at ebi.ac.uk
Thu Jul 20 22:21:37 UTC 2006


Thanks for details about oracle web services requirements. Interesting,
and good to know.

> The reason is, that oracle is very strict with there design of web
> service. You are not allowed to use any abstract method in your
> implementation classes.
>
   It's a bit strange because the class that represents a moby service
does not have any abstract method. The generated skeleton has, but your
implementation class (that extends the skeleton and implements method 
processIt()) does not have. And it is the implementation class that is
used to be deployed.

> An other requirement is that every oracle based web service must have
> an interface which extends from java.rmi.Remote and very method
> declaration must throw a java.rmi.RemoteException.
>
   Okay, good to know. So why not just to implement (actually to extend)
this interface in your implementation class? I may not understand fully
the concept of the Remote interface, but a brief reading of javadoc tells
me that "Only those methods specified in a 'remote interface', an
interface that extends java.rmi.Remote are available remotely." Which
indicates that perhaps something like this could work (assuming, for
example, that your service name is 'HelloOracle'):

     // this class is generated by MoSeS
     abstract class your.authority.HelloOracleSkel {...}

     // this clas is deployed as a web service main class
     class your.package.HelloOracleImpl
        extends your.authority.HelloOracleSkel
        implements HelloOracleRemote {
        ...
     }

     // this interface should make oracle happy
     interface HelloOracleRemote
        extends java.rmi.Remote {
        String HelloOracle (Object data);
     }

> Now my services are running under both runtimes.
>
    And that's the main thing! Perfect.

   Cheers,
   Martin

-- 
Martin Senger
   email: martin.senger at gmail.com
   skype: martinsenger





More information about the MOBY-dev mailing list