axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bob Cotton <>
Subject Re: A problem in Axis Beta2 when the EJB is called
Date Thu, 09 May 2002 03:14:04 GMT
>>>>> "Vishy" == Vishy Kasar <> writes:

The solution I came up with for this was to put the Remote Interface
in the "className" parameter. The ServiceDesc (internal axis class)
will gather Methods from the interface, then "invoke" them on the
object returned by a call to ejbCreate().

The object returned from ejbCreate is guaranteed to implement the
Remote Interface.

    Vishy> Hi, I poked further in to why EJB provider stopped working
    Vishy> in AXIS Beta 2.  This is due to a fundamental change in
    Vishy> AXIS which now requires the knowledge about the
    Vishy> implementation class at config time.

    Vishy> AXIS beta 1 used to delay gathering operations from
    Vishy> implementation class till invocation time. By that time, it
    Vishy> had the implementation class.  Beta 2 is doing operation
    Vishy> gathering based on implementation class right at the
    Vishy> provider initialization. My guess is: This was done to
    Vishy> improve performance.

    Vishy> IMO, this is a bad direction to go in. It creates a problem
    Vishy> for EJB scenario where you specify home and call create on
    Vishy> home to obtain the actual implementation object at run
    Vishy> time. It also creates a problem for systems which are
    Vishy> capable of dynamic invocation. For example, in CORBA I can
    Vishy> call the server object (running somewhere else) with in the
    Vishy> provider with no knowledge about the implementation class
    Vishy> using DII. Now if AXIS ties me to providing a
    Vishy> implementation class at config time, the flexibility that
    Vishy> we can provide will be far less.

In this scenario it would be difficult to generate WSDL on-the-fly.

    Vishy> A solution to the current problem may be to define the
    Vishy> className parameter in the deploy.wsdd for the EJB
    Vishy> provider. However that may not work in cases where Web
    Vishy> Container and EJB container are within the same VM. Here is
    Vishy> an example:

    Vishy>   <service name="Animal" provider="java:EJB">
    Vishy>     <parameter name="beanJndiName" value="Animal"/>
    Vishy>     <parameter name="homeInterfaceName"
    Vishy> value="com.borland.examples.webservices.ejb.AnimalHome"/>
    Vishy>     <parameter name="className"
    Vishy> value="com.borland.examples.webservices.ejb._Animal_Stub"/>
    Vishy>     <parameter name="allowedMethods" value="talk sleep"/>
    Vishy>   </service>

SynXis Corporation      |    | Obstacles are those frightful 
1610 Wynkoop, Suite 400 | Ph: (303)595-2511 | things you see when you take your
Denver, CO  80202       | Fax:(303)534-4257 | eyes off your goal.  -Henry Ford

View raw message