The CSharpGeneratorTask and associated classes were intended only as a
way to create .Net representations of the OpenWire commands used to
communicate between the Java and .Net client.  To send you own .Net
objects to an Java client or Java to .Net you will need to perform some
sort of Transformation to XML or JSON for example and send the data in a
TextMessage or BytesMessage.  

The OpenWire protocol was not intended to know how to marshal your
own .Net objects to Java, its only meant to be the communication
protocol between ActiveMQ clients, which can be Java, .Net, C++ etc.
Sending object messages to non Java clients is just not that simple.
The Java client allows for a Transformation plugin to be used so that
the java client could turn an ObjectMessage into an XML encoded
TextMessage for instance making that part of it transparent.  

See this page for info on Message Transformation in the Java client.
http://activemq.apache.org/message-transformation.html

On the CSharp side you'd need to add a layer above the client code to
make this sort of transformation on you .Net Objects as the NMS client
doesn't yet have Message Transformation Plugin features like the Java
side has.  

So in short when sending messages between clients other than Java
clients you shouldn't really be thinking ObjectMessage, you will have to
use the more generic TextMessage or BytesMessage as you means of
transport and transform back to you own objects on either end.

Regards
Tim.


On Mon, 2009-02-02 at 18:02 -0800, dougly wrote:
> I basically have a need to send an object thru OpenWire to activeMQ.
> The C# code files were generated by CSharpGeneratorTask.
> 
> I hope you could provide me any link to documentation regarding this I
> appreciate.
> 
> Doug
> 
> 
> 
> semog wrote:
> > 
> > Hi Doug,
> > 
> > I'm not quite sure what your ultimate goal is, but your code looks
> > like it is trying to configure the wire protocol to use OpenWire.  If
> > that is the case, you don't need all that advanced code.  You can use
> > the NMSConnectionFactory object and pass in a URI string that
> > configures your wireformat, and several other connection and session
> > settings.  If you would like some links to documentation on URI
> > parameter configuration, let me know.  Otherwise let me know if I have
> > misunderstood your intentions.
> > 
> > Best,
> > Jim
> > 
> > On 1/31/09, dougly <dmly....@gmail.com> wrote:
> >>
> >> Hi folks,
> >> I used the CSharpGeneratorTask to create the corresponding C#
> >> serializable
> >> classes along with a MarshallerFactory several classes to do the
> >> serialization.
> >> Now in my client code in .NET what do I need to do to configure the
> >> Marshallerfactory.
> >>
> >> IConnectionFactory fac = new ConnectionFactory("tcp://localhost:61616");
> >>
> >>             using (IConnection conn = fac.CreateConnection())
> >>             {
> >>
> >>                 MarshallerFactory mfac = new MarshallerFactory();
> >>                 ITransport itrans = ((Connection) conn).ITransport;
> >>                 if (itrans.GetType() == typeof(TcpTransport))
> >>                 {
> >>                     Console.WriteLine("Marshaller added ...");
> >>                     TcpTransport trans = (TcpTransport)
> >> ((Connection)conn).ITransport;
> >>                     mfac.configure((OpenWireFormat) trans.Wireformat);
> >>                 }
> >>
> >>                 conn.Start();
> >>                 ISession session = conn.CreateSession();
> >>
> >> But I guess this is not going to work.
> >>
> >> Thanks guys
> >> Doug
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Configuring-MarshallerFactory-in-.NET-tp21771528p21771528.html
> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> >>
> >>
> > 
> > 
> 
-- 
Tim Bish
http://fusesource.com
http://timbish.blogspot.com/



Reply via email to