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 <[EMAIL PROTECTED]> 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:[EMAIL PROTECTED] > Sent: Wednesday, October 10, 2007 8:28 AM > To: [email protected]; [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: [email protected] > > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
