We are also experiencing this Issue.  When we tried to beta 2 release we
found that Axis would no longer find the services.  I will be looking into
this today but does anybody have any information of this issue?

Michael



                                                                                       
                                                        
                    "Vidyanand                                                         
                                                        
                    Murunikkara"          To:     <[EMAIL PROTECTED]>           
                                                        
                    <Vidyanand@inf        cc:                                          
                                                        
                    ravio.com>            Subject:     RE: A problem in Axis Beta2 
when the EJB is called                                      
                                                                                       
                                                        
                    05/06/2002                                                         
                                                        
                    05:53 PM                                                           
                                                        
                    Please respond                                                     
                                                        
                    to axis-user                                                       
                                                        
                                                                                       
                                                        
                                                                                       
                                                        






i know for sure that it works in beta 1 .. with beta 2 i have never
tried .. i have tried it in one of the nighly build before beta 2 (
after beta 1) and it gave me the same error as the one younsoo got.

Vidyanand

-----Original Message-----
From: Vaishakhi Ajmera [mailto:[EMAIL PROTECTED]]
Sent: Monday, May 06, 2002 2:38 PM
To: [EMAIL PROTECTED]
Subject: Re: A problem in Axis Beta2 when the EJB is called


I have the same problem.
Were you able to solve it?

Vaishakhi
----- Original Message -----
From: "Younsoo" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, May 02, 2002 9:08 PM
Subject: A problem in Axis Beta2 when the EJB is called


>   I implemented a webservice with EJB in the Axis beta1. There is a
problem in Axis beta2.
> When the EJB webservice is called, the axis returns a error message.
My
EJB webservice
> has 4 operations ( deposit, withdraw, getBalance, and
getFormattedBalance )
> Here is the error message :
>
> AXIS error
> Sorry, something seems to have gone wrong... here are the details:
> No such operation 'getBalance'
>
>
>
>   I read the Axis beta2 source code and found the reason why the error
occurred. The error position
> is RPCProvider.java , "processMessage" method.
>
>                 .    .    .    .    .
>                 .    .    .    .    .
>                 .    .    .    .    .
> // This may have changed, so get it again...
> // FIXME (there should be a cleaner way to do this)
> operation = msgContext.getOperation();
>
> if (operation == null) {
>     QName qname = new QName(body.getNamespaceURI(),
>                            body.getName());
>     operation = serviceDesc.getOperationByElementQName(qname);
> }
>
> if (operation == null) {
>    throw new AxisFault(JavaUtils.getMessage("noSuchOperation",
>                                             methodName));  <<<== Error
occurs in this place.
> }
>
> // Create the array we'll use to hold the actual parameter
> // values.  We know how big to make it from the metadata.
> Object[]     argValues  =  new Object [operation.getNumParams()];
>                 .    .    .    .    .
>                 .    .    .    .    .
>                 .    .    .    .    .
>
>   I think that "server-config.wsdd" file is parsed in WSDDDeployment's
constructor, and <service> element's
> contents are parsed into WSDDService class.
>
> public WSDDDeployment(Element e)
>     throws WSDDException
> {
>     super(e);
>
>     Element [] elements = getChildElements(e, "handler");
>     int i;
>                 .    .    .    .    .
>                 .    .    .    .    .
>                 .    .    .    .    .
>     elements = getChildElements(e, "service");
>     for (i = 0; i < elements.length; i++) {
>         WSDDService service = new WSDDService(elements[i]);
>         deployService(service);
>     }
>                 .    .    .    .    .
>                 .    .    .    .    .
>                 .    .    .    .    .
> }
>
>   When WSDDService instance created, WSDDService constructor parses
<service> element and calls validateDescriptors () method. A <service>
element's subelement, <parameter name="className" value="xxx"/>'s value,
java class is loaded.
>
> public void validateDescriptors()
> {
>     String className = this.getParameter("className");
>     if (className != null) {
>         try {
>             // Will this always be the right classloader?
>             ClassLoader cl =
Thread.currentThread().getContextClassLoader();
>             Class cls = cl.loadClass(className); <<== <parameter
name="className" value="xxx">'s xxx class is loaded.
>             desc.setImplClass(cls);
>             initTMR();
>             String encStyle = (desc.getStyle() ==
ServiceDesc.STYLE_RPC) ?
>                 Constants.URI_CURRENT_SOAP_ENC : "";
>
desc.setTypeMapping((TypeMapping)tmr.getTypeMapping(encStyle));
>         } catch (Exception ex) {
>         }
>     }
>                 .    .    .    .    .
>                 .    .    .    .    .
>                 .    .    .    .    .
> }
>
>   As you can see above source, the loaded class, cls is set into
ServiceDesc.( desc.setImplClass(cls); ) In setImplClass ()
> method operations(xxx class's methods) are instantiated into
OperationDesc
class.
>
> public void setImplClass(Class implClass) {
>     if (this.implClass != null)
>         throw new IllegalArgumentException(
>                 JavaUtils.getMessage("implAlreadySet"));
>
>     this.implClass = implClass;
>     if (Skeleton.class.isAssignableFrom(implClass)) {
>         isSkeletonClass = true;
>         loadSkeletonOperations(); <<== OperationDesc instances are
set.
>     }
> }
>
>   Here is my "server-config.wsdd" file's part . There is no <parameter
name="className"> subelement in EJB <service>.
> Therefore OperationDesc instances couldn't be created.
> msgContext.getOperation() and
serviceDesc.getOperationByElementQName(qname) in RPCProvider.java ,
> "processMessage" method couldn't retrieve OperationDesc instance.
> So AxisFault(JavaUtils.getMessage("noSuchOperation", methodName)) is
thrown.
>
> <!-- As you can see, this is a webservice using general java class -->
>  <service name="Add" provider="java:RPC">
>   <parameter name="allowedMethods" value="*"/>
>   <parameter name="scope" value="Request"/>
>   <parameter name="className" value="samples.TestWS.WebServiceTest"/>
>  </service>
> <!-- a webservice using EJB -->
>  <service name="MyAccount" provider="java:EJB">
>   <parameter name="allowedMethods" value="*"/>
>   <parameter name="jndiURL" value="localhost"/>
>   <parameter name="scope" value="request"/>
>   <parameter name="beanJndiName" value="TestAccount"/>
>   <parameter name="homeInterfaceName"
value="testaccount.TestAccountHome"/>
>  </service>
>
> How can I make a webservice using EJB?





Reply via email to