You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@ws.apache.org by Enquire <ws...@yahoo.com> on 2002/11/13 20:46:48 UTC

SOAP- ENV :Fault = Protocol ???

Hi All,

I have a problem with a SOAP invocation of an ATL COM
object which I have deployed (I feel imperfectly on
the Apache SOAP Server.
I however, do not have any problems with my other
deployed SOAP WebServices at the same SOAP RPCRouter
URL...........

The SOAP Response returns a text/html format error as
the Apache Xerces DOMWriter/DOMFaultListener is not
happy with the format of the SOAP ENV– more
importantly both the Java SOAP Client and the Apache
SOAP Server complain about a ‘NullPointerReference’.
This leads me more to believe that it basically is a
problem with the way I have registered the SOAP
WebService using the XML deployment Descriptor.

I could not find anyone better source than here to
follow this line of enquiry to possible programmatic
success.

In the meantime, I have sparingly tried something with
the ATL COM DLL which I thought I may report to you:

i) First up, I don’t think that I have registered the
ATL COM DLL properly with the SOAP Server. I need a
proper way of naming the Object (preferably a fully
qualified name); this can be noted in the XML file
which is used as a deployment descriptor for the SOAP
WebService . To extrapolate an earlier experience with
Microsoft based COM DLLs { what I had done with the
Visual Basic COM DLL } -> I had to register the
Project Name and the Class Module name in the VB COM
DLL SOAP WebService Deployment Descriptor(XML file
again) .I need the ‘progid’ value (please note the
relevant portions under). Could you guide me in this
regard??

 
********************
Visual Basic COM DLL            
********************

<!--Apache SOAP specific deployment descriptor (ie
loads this service into Apache SOAP.-->

<isd:service
xmlns:isd="http://xml.apache.org/xml-soap/deployment"

             id="urn:demo:hello">

  <isd:provider
type="org.apache.soap.providers.com.RPCProvider"

                scope="Application"

                methods="Hello">

    <isd:java class="required not needed for
COMProvider"/>

    <isd:option key="progid" value="Project1.Class1"
/>

  </isd:provider>

 
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>

</isd:service>

 

 
**********************
Visual C++ ATL Com DLL
**********************
 

<!--Apache SOAP specific deployment descriptor (ie
loads this service into Apache SOAP.-->

<isd:service
xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:demo:ATL">

  <isd:provider
type="org.apache.soap.providers.com.RPCProvider"

      scope="Application" methods="DllMain">

    <isd:java class="required not needed for
COMProvider"/>

    <isd:option key="progid"
value="Day1Server.MyFirstATLObject" />

    <!-- <isd:option key="threadmodel"
value="SINGLEAPARTMENTTHREADED" />

    <isd:option key="threadmodel"
value="APARTMENTTHREADED" />

    <isd:option key="threadmodel"
value="MULTITHREADED" /> 

    -->

    

        <isd:option key="threadmodel"
value="APARTMENTTHREADED" />

  </isd:provider>

<isd:faultListener>

org.apache.soap.server.DOMFaultListener

</isd:faultListener>

</isd:service>

 

 

ii) Next, I was able to register an ATL COM DLL which
is not using a BSTR (tried int*, char*…successfully
with minor though ‘telling’ code tweaking), but the
STL Registration process requires that a pointer be
used due to the constraints imposed by the ‘atl.h’
header file (standard) – btw can we change this header
so that it accepts non-pointer based datatypes? (I
foresee that there might be more code other than the
header which we may need to update in the ‘Microsoft’
implementation of ATL).

 

 

iii) Further, I was considering the reverse approach
-> ATL COM Client to non-Microsoft SOAP WebService,
say, Java.

 

iv) As of time=now, I haven’t tried testing a separate
box(computer)->>[ Client on one box and server on
another box ] scenario (memory heap allocation problem
possibly??)

 

v) Also, Java handles BSTR; it refers to it as
BinaryString!


To conclude, IMHO, I feel that the Java
NullPointerException is being thrown mainly due to the
fact that the fully qualified object name is not
available.


Please respond ASAP.

Sincerely,
<->{ R2D2 }<->

 

 

 

 

 

 



 



__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

Re: SOAP- ENV :Fault = Protocol ???

Posted by Scott Nichol <sn...@scottnichol.com>.
A couple of things.

1. I notice you list DllMain as the method in the deployment descriptor.
DllMain is the statically linked entry point into your DLL code.  The
methods in the deployment descriptor should be COM methods.

2. The progid for an ATL COM DLL is in the .rgs file in the project.
There's probably some way to view it in the IDE, too, but I don't
remember.

3. The COM provider makes calls through IDispatch.  Your COM object
should thus have dual interface.  This can be verified in the .idl file.
Again, the IDE probably makes this available as well.

Scott Nichol

----- Original Message -----
From: "Enquire" <ws...@yahoo.com>
To: <so...@xml.apache.org>
Sent: Wednesday, November 13, 2002 2:46 PM
Subject: SOAP- ENV :Fault = Protocol ???


> Hi All,
>
> I have a problem with a SOAP invocation of an ATL COM
> object which I have deployed (I feel imperfectly on
> the Apache SOAP Server.
> I however, do not have any problems with my other
> deployed SOAP WebServices at the same SOAP RPCRouter
> URL...........
>
> The SOAP Response returns a text/html format error as
> the Apache Xerces DOMWriter/DOMFaultListener is not
> happy with the format of the SOAP ENV- more
> importantly both the Java SOAP Client and the Apache
> SOAP Server complain about a 'NullPointerReference'.
> This leads me more to believe that it basically is a
> problem with the way I have registered the SOAP
> WebService using the XML deployment Descriptor.
>
> I could not find anyone better source than here to
> follow this line of enquiry to possible programmatic
> success.
>
> In the meantime, I have sparingly tried something with
> the ATL COM DLL which I thought I may report to you:
>
> i) First up, I don't think that I have registered the
> ATL COM DLL properly with the SOAP Server. I need a
> proper way of naming the Object (preferably a fully
> qualified name); this can be noted in the XML file
> which is used as a deployment descriptor for the SOAP
> WebService . To extrapolate an earlier experience with
> Microsoft based COM DLLs { what I had done with the
> Visual Basic COM DLL } -> I had to register the
> Project Name and the Class Module name in the VB COM
> DLL SOAP WebService Deployment Descriptor(XML file
> again) .I need the 'progid' value (please note the
> relevant portions under). Could you guide me in this
> regard??
>
>
> ********************
> Visual Basic COM DLL
> ********************
>
> <!--Apache SOAP specific deployment descriptor (ie
> loads this service into Apache SOAP.-->
>
> <isd:service
> xmlns:isd="http://xml.apache.org/xml-soap/deployment"
>
>              id="urn:demo:hello">
>
>   <isd:provider
> type="org.apache.soap.providers.com.RPCProvider"
>
>                 scope="Application"
>
>                 methods="Hello">
>
>     <isd:java class="required not needed for
> COMProvider"/>
>
>     <isd:option key="progid" value="Project1.Class1"
> />
>
>   </isd:provider>
>
>
>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
tener>
>
> </isd:service>
>
>
>
>
> **********************
> Visual C++ ATL Com DLL
> **********************
>
>
> <!--Apache SOAP specific deployment descriptor (ie
> loads this service into Apache SOAP.-->
>
> <isd:service
> xmlns:isd="http://xml.apache.org/xml-soap/deployment"
> id="urn:demo:ATL">
>
>   <isd:provider
> type="org.apache.soap.providers.com.RPCProvider"
>
>       scope="Application" methods="DllMain">
>
>     <isd:java class="required not needed for
> COMProvider"/>
>
>     <isd:option key="progid"
> value="Day1Server.MyFirstATLObject" />
>
>     <!-- <isd:option key="threadmodel"
> value="SINGLEAPARTMENTTHREADED" />
>
>     <isd:option key="threadmodel"
> value="APARTMENTTHREADED" />
>
>     <isd:option key="threadmodel"
> value="MULTITHREADED" />
>
>     -->
>
>
>
>         <isd:option key="threadmodel"
> value="APARTMENTTHREADED" />
>
>   </isd:provider>
>
> <isd:faultListener>
>
> org.apache.soap.server.DOMFaultListener
>
> </isd:faultListener>
>
> </isd:service>
>
>
>
>
>
> ii) Next, I was able to register an ATL COM DLL which
> is not using a BSTR (tried int*, char*.successfully
> with minor though 'telling' code tweaking), but the
> STL Registration process requires that a pointer be
> used due to the constraints imposed by the 'atl.h'
> header file (standard) - btw can we change this header
> so that it accepts non-pointer based datatypes? (I
> foresee that there might be more code other than the
> header which we may need to update in the 'Microsoft'
> implementation of ATL).
>
>
>
>
>
> iii) Further, I was considering the reverse approach
> -> ATL COM Client to non-Microsoft SOAP WebService,
> say, Java.
>
>
>
> iv) As of time=now, I haven't tried testing a separate
> box(computer)->>[ Client on one box and server on
> another box ] scenario (memory heap allocation problem
> possibly??)
>
>
>
> v) Also, Java handles BSTR; it refers to it as
> BinaryString!
>
>
> To conclude, IMHO, I feel that the Java
> NullPointerException is being thrown mainly due to the
> fact that the fully qualified object name is not
> available.
>
>
> Please respond ASAP.
>
> Sincerely,
> <->{ R2D2 }<->
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> __________________________________________________
> Do You Yahoo!?
> Everything you'll ever need on one web page
> from News and Sport to Email and Music Charts
> http://uk.my.yahoo.com
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: SOAP- ENV :Fault = Protocol ???

Posted by Scott Nichol <sn...@scottnichol.com>.
A couple of things.

1. I notice you list DllMain as the method in the deployment descriptor.
DllMain is the statically linked entry point into your DLL code.  The
methods in the deployment descriptor should be COM methods.

2. The progid for an ATL COM DLL is in the .rgs file in the project.
There's probably some way to view it in the IDE, too, but I don't
remember.

3. The COM provider makes calls through IDispatch.  Your COM object
should thus have dual interface.  This can be verified in the .idl file.
Again, the IDE probably makes this available as well.

Scott Nichol

----- Original Message -----
From: "Enquire" <ws...@yahoo.com>
To: <so...@xml.apache.org>
Sent: Wednesday, November 13, 2002 2:46 PM
Subject: SOAP- ENV :Fault = Protocol ???


> Hi All,
>
> I have a problem with a SOAP invocation of an ATL COM
> object which I have deployed (I feel imperfectly on
> the Apache SOAP Server.
> I however, do not have any problems with my other
> deployed SOAP WebServices at the same SOAP RPCRouter
> URL...........
>
> The SOAP Response returns a text/html format error as
> the Apache Xerces DOMWriter/DOMFaultListener is not
> happy with the format of the SOAP ENV- more
> importantly both the Java SOAP Client and the Apache
> SOAP Server complain about a 'NullPointerReference'.
> This leads me more to believe that it basically is a
> problem with the way I have registered the SOAP
> WebService using the XML deployment Descriptor.
>
> I could not find anyone better source than here to
> follow this line of enquiry to possible programmatic
> success.
>
> In the meantime, I have sparingly tried something with
> the ATL COM DLL which I thought I may report to you:
>
> i) First up, I don't think that I have registered the
> ATL COM DLL properly with the SOAP Server. I need a
> proper way of naming the Object (preferably a fully
> qualified name); this can be noted in the XML file
> which is used as a deployment descriptor for the SOAP
> WebService . To extrapolate an earlier experience with
> Microsoft based COM DLLs { what I had done with the
> Visual Basic COM DLL } -> I had to register the
> Project Name and the Class Module name in the VB COM
> DLL SOAP WebService Deployment Descriptor(XML file
> again) .I need the 'progid' value (please note the
> relevant portions under). Could you guide me in this
> regard??
>
>
> ********************
> Visual Basic COM DLL
> ********************
>
> <!--Apache SOAP specific deployment descriptor (ie
> loads this service into Apache SOAP.-->
>
> <isd:service
> xmlns:isd="http://xml.apache.org/xml-soap/deployment"
>
>              id="urn:demo:hello">
>
>   <isd:provider
> type="org.apache.soap.providers.com.RPCProvider"
>
>                 scope="Application"
>
>                 methods="Hello">
>
>     <isd:java class="required not needed for
> COMProvider"/>
>
>     <isd:option key="progid" value="Project1.Class1"
> />
>
>   </isd:provider>
>
>
>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
tener>
>
> </isd:service>
>
>
>
>
> **********************
> Visual C++ ATL Com DLL
> **********************
>
>
> <!--Apache SOAP specific deployment descriptor (ie
> loads this service into Apache SOAP.-->
>
> <isd:service
> xmlns:isd="http://xml.apache.org/xml-soap/deployment"
> id="urn:demo:ATL">
>
>   <isd:provider
> type="org.apache.soap.providers.com.RPCProvider"
>
>       scope="Application" methods="DllMain">
>
>     <isd:java class="required not needed for
> COMProvider"/>
>
>     <isd:option key="progid"
> value="Day1Server.MyFirstATLObject" />
>
>     <!-- <isd:option key="threadmodel"
> value="SINGLEAPARTMENTTHREADED" />
>
>     <isd:option key="threadmodel"
> value="APARTMENTTHREADED" />
>
>     <isd:option key="threadmodel"
> value="MULTITHREADED" />
>
>     -->
>
>
>
>         <isd:option key="threadmodel"
> value="APARTMENTTHREADED" />
>
>   </isd:provider>
>
> <isd:faultListener>
>
> org.apache.soap.server.DOMFaultListener
>
> </isd:faultListener>
>
> </isd:service>
>
>
>
>
>
> ii) Next, I was able to register an ATL COM DLL which
> is not using a BSTR (tried int*, char*.successfully
> with minor though 'telling' code tweaking), but the
> STL Registration process requires that a pointer be
> used due to the constraints imposed by the 'atl.h'
> header file (standard) - btw can we change this header
> so that it accepts non-pointer based datatypes? (I
> foresee that there might be more code other than the
> header which we may need to update in the 'Microsoft'
> implementation of ATL).
>
>
>
>
>
> iii) Further, I was considering the reverse approach
> -> ATL COM Client to non-Microsoft SOAP WebService,
> say, Java.
>
>
>
> iv) As of time=now, I haven't tried testing a separate
> box(computer)->>[ Client on one box and server on
> another box ] scenario (memory heap allocation problem
> possibly??)
>
>
>
> v) Also, Java handles BSTR; it refers to it as
> BinaryString!
>
>
> To conclude, IMHO, I feel that the Java
> NullPointerException is being thrown mainly due to the
> fact that the fully qualified object name is not
> available.
>
>
> Please respond ASAP.
>
> Sincerely,
> <->{ R2D2 }<->
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> __________________________________________________
> Do You Yahoo!?
> Everything you'll ever need on one web page
> from News and Sport to Email and Music Charts
> http://uk.my.yahoo.com
>
> --
> To unsubscribe, e-mail:   <ma...@xml.apache.org>
> For additional commands, e-mail: <ma...@xml.apache.org>
>
>