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:[EMAIL PROTECTED] 
Sent: Wednesday, October 10, 2007 8:28 AM
To: axis-user@ws.apache.org; [EMAIL PROTECTED]; 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 <[EMAIL PROTECTED]> 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:[EMAIL PROTECTED]
> 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
>
[EMAIL PROTECTED]>java.io.IOException:
> No serializer found for class
> org.exoplatform.services.portletcontainer.test.portlet2.MyEventPub in
> registry [EMAIL PROTECTED]
> 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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to