axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Zavizionov" <alexey.zavizio...@gmail.com>
Subject Re: No serializer found for class in registry TypeMappingDelegate
Date Mon, 15 Oct 2007 14:40:12 GMT
Hello, Jeff

Sorry for the late reply.
I was impressed with your long and understandable answer to my
incomprehensible question .
By now I have solved the problem.

---
Need to serialize (marshal) event Object to Document and then create
MessageElement with it.
On the other side deserialize (unmarshal) it direct to MessageElement.
---

Thanks and regards,
Alexey.

On 10/10/07, Walker, Jeff <Jeff.Walker@fmr.com> wrote:
> Alexey,
> Let's step back for a minute. I'm confused as to your system setup.
> Let's go over the basics of Axis1-1.4 first.
>
> Assuming you started with a wsdl file first (Top-Down approach) and also
> assuming you are creating a Document/Literal based wsdl, you must create
> XML Schema for every Java class that you intend to send over the
> service. Therefore, the MyEventPub class (which I take it you are trying
> to send over the wire) must have equivalent XML Schema created for it,
> or at least imported from an external xsd file into your wsdl file.
> Therefore, to send it over the wire, you need to know the structure of
> this class in advance (so that you can write schema for it).
>
> The WSDL2Java generator will read the schema in the wsdl and essentially
> create two classes for each element/complexType it finds. One is to
> serialize the class (put it into xml) the other is to deserialize it
> (take it from xml and back into a Java object). This is a simplified
> view of the process, but it is essentially correct.
>
> Also generated for you, is a deploy.wsdd file. In the deploy.wsdd file,
> there are some namespace declarations. And then a section that describes
> the service, such as what methods are exposed publicly, the port name
> (which is the name of the web service), the name of your skeleton class
> (which is used by Axis to make sure the correct operation is called on
> your interface), and so on. Further down in deploy.wsdd there are type
> mappings. This is where Axis learns about the classes that can be
> serialized/deserialized. Each type mapping essentially holds a qualified
> namespace, the type of object your transferring (that is, the package
> and name of your class), and the names of the serializer and
> deserializer classes that will do the work for that type.
>
> Now, your original post hinted that a type mapping was missing from the
> wsdd file, for the MyEventPub class. There maybe some strange situations
> where a type mapping may not be created by the generator, even though
> the MyEventPub class has an schema equivalent in the wsdl file. But I
> suspected (in my first reply) that the problem was that you did not
> create any schema for MyEventPub in the first place and so Axis had no
> way of knowing how to serialize/deserialize it. Hence, the type mapping
> exception.
>
> Now, your following question asks where can you 'store' MyEventPub
> within MessageElement. The problem here, is that your hinting at trying
> to construct the soap parse tree yourself, and then presumably serialize
> that tree (with the MyEventPub fields in it somewhere). I strongly
> recommend that you do not approach your web service from this angle. I
> cannot help you further with this direction. (Perhaps you have previous
> experience with RPC-encoded services and serializing graphs of objects?
> If not, then this approach will be a difficult task indeed).
>
> I recommend you define MyEventPub in schema (in the wsdl) and let Axis
> do 95% of the work for you. I also recommend that you adopt the
> Document/Literal-Wrapped wsdl format (go here to learn about it:
> http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/),
> and abandon any attempt at an RPC service. You will get virtually no
> help from this mailing list if you choose to continue with an RPC-based
> wsdl. (That is because a wsdl based on RPC is essentially deprecated as
> a web service design, and nobody does web services like that anymore.
> Why not?Because RPC-Encoded is not WSI compliant. There is no standard
> way to interpret the serialize object graph across every platform that
> could conceivably call your service).
>
> In Document Literal-Wrapped, the methods on your interface take a single
> object and return a single object. Those two objects can obviously have
> multiple objects within them. Each object is based on schema in your
> wsdl. This is the approach everybody else takes with web services these
> days.
>
> One more thing. There are only a few of us left still using Axis1.4 on
> our projects. Nearly all subscribers of the Axis mailing list are using
> Axis2. You cannot use Axis2 to do an RPC Encoded service.
> Does any of this help?
> -jeff
>
>
>
> -----Original Message-----
> From: Alexey Zavizionov [mailto:alexey.zavizionov@gmail.com]
> Sent: Wednesday, October 10, 2007 8:28 AM
> To: axis-user@ws.apache.org; wsrp-dev@lists.oasis-open.org; Roman
> Pedchenko
> Subject: Re: No serializer found for class in registry
> TypeMappingDelegate
>
> Thanks for reply!
>
> This MyEventPub is the sample user's class fired as event on server at
> runtime, therefore I don't know about before.
>
> How can I marshal this with JAXB for MessageElement ?
> I mean this MyEventPub is well annotated class and well marshalled to
> StringWriter().
>
> Where can I store it within MessageElement?
>
> Please, advise me.
>
> Alexey.
>
> On 10/5/07, Walker, Jeff <Jeff.Walker@fmr.com> wrote:
> > I think your missing a type mapping in the wsdd file.
> > You need something like this inserted. (deploy.wsdd file:)
> > ...
> > <typeMapping
> >         xmlns:ns="http://www.company.com/project"
> >         qname="ns:MyEventPub"
> >
> >
> type="java:org.exoplatform.services.portletcontainer.test.portlet2.MyEve
> > ntPub"
> >
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
> >
> > deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> >         encodingStyle=""
> >       />
> > ...
> >
> > The real question is, why do you not have it?
> > If you ran your wsdl file through the generator, the stubs and
> skeleton
> > code gets created for you. This command also generates the deploy.wsdd
> > file and should add in all of the type mappings you need for your
> > classes.
> >
> > %>java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy
> > true WebServiceName.wsdl
> >
> > -jeff
> >
> >
> >
> > -----Original Message-----
> > From: Alexey Zavizionov [mailto:alexey.zavizionov@gmail.com]
> > Sent: Friday, October 05, 2007 12:31 PM
> > To: axis-user@ws.apache.org
> > Subject: No serializer found for class in registry TypeMappingDelegate
> >
> > Hello list!
> >
> > I have an exc on server of my service:
> > [ERROR] BeanSerializer - Exception: <java.io.IOException: No
> > serializer found for class
> > org.exoplatform.services.portletcontainer.test.portlet2.MyEventPub in
> > registry
> >
> org.apache.axis.encoding.TypeMappingDelegate@9a5a48>java.io.IOException:
> > No serializer found for class
> > org.exoplatform.services.portletcontainer.test.portlet2.MyEventPub in
> > registry org.apache.axis.encoding.TypeMappingDelegate@9a5a48
> > at
> >
> org.apache.axis.encoding.SerializationContext.serializeActual(Serializat
> > ionContext.java:1507)
> > ...
> >
> > What could this be?
> >
> > PS: I use Axis1-1.4
> >
> > Thanks,
> > Alexey
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: axis-user-help@ws.apache.org
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail: axis-user-help@ws.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Mime
View raw message