You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by DA <di...@pramati.com> on 2008/04/29 11:26:04 UTC

sending message from an external client

Hi all,
My application runs on jboss and i configured activewq for
messsaging.everything is working fine messaging r flowing fine.Now i want to
send message to this queue from an external client a main program.
i created the initialcontext with the properties from jboss

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

now when i did a lookup for connectionfatory it is returning me null. On
debugging it i found that it actually found the connectionfactory but in
NamingManager.getObjectInstance at

factory = getObjectFactoryFromReference(ref, f);
		if (factory != null) {
		    return factory.getObjectInstance(ref, name, nameCtx,
						     environment);
		}

it is returning null. Before going there, ref is holding the
connectionfactory instance.

i observed that factory is "org.jboss.util.naming.NonSerializableFactory"

in that factory.getObjectInstance it is looking for  connectionfactoryName
in a map and simply returning null from there.

can any one tell me what is happening there and what is wrong in my code.

Thanks in advance.
  DA
-- 
View this message in context: http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: sending message from an external client

Posted by Luiz Mendes Almeida <lu...@gmail.com>.
Hi.

  I think you can't get the jboss context using an external application.
  My advice is to create a different context to connect to this queue.
  I hope help you.

Dwight.

2008/4/29 DA <di...@pramati.com>:

>
> Hi all,
> My application runs on jboss and i configured activewq for
> messsaging.everything is working fine messaging r flowing fine.Now i want
> to
> send message to this queue from an external client a main program.
> i created the initialcontext with the properties from jboss
>
> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
> java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
>
> now when i did a lookup for connectionfatory it is returning me null. On
> debugging it i found that it actually found the connectionfactory but in
> NamingManager.getObjectInstance at
>
> factory = getObjectFactoryFromReference(ref, f);
>                if (factory != null) {
>                    return factory.getObjectInstance(ref, name, nameCtx,
>                                                     environment);
>                }
>
> it is returning null. Before going there, ref is holding the
> connectionfactory instance.
>
> i observed that factory is "org.jboss.util.naming.NonSerializableFactory"
>
> in that factory.getObjectInstance it is looking for  connectionfactoryName
> in a map and simply returning null from there.
>
> can any one tell me what is happening there and what is wrong in my code.
>
> Thanks in advance.
>  DA
> --
> View this message in context:
> http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>


-- 
Luiz Mendes Almeida
tel: +55 (13) 3113-3663
cel: +351 93 633 00 40

Re: sending message from an external client

Posted by DA <di...@pramati.com>.
thanks joe now my code has become generic and with this configuration
Activemq messaging is working fine. i want the same for jboss messaging also
where can i find it.

i tried with the following configuration 

java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory

java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

java.naming.provider.url=jnp://localhost:1099

connectionFactoryNames=MyQueueConnectionFactory

it is not working. i got the same problem connectionfactory is comming as
null. where can i find sample jndi properties file or same kind of
configurations using spring.

Thanks, 
DA.

 



ttmdev wrote:
> 
> Yup, referencing ActiveMQ objects from your code nails your application to
> ActiveMQ and makes it non-portable. It defeats the purpose of using the
> JMS. If you're running an external (standalone) client, Spring would be a
> good way to go, but if you want to still use the JNDI, then simply create
> a jndi.properties file and put it in your CLASSPATH. You can then get the
> initial context and a particular factory as follows. 
> 
> Context ctx = new InitialContext();            
> ConnectionFactory factory = (javax.jms.ConnectionFactory) 
>             ctx.lookup("localConnectionFactory");       
> 
> You could also reference some other unique *.properties files and load 
> that one as follows
> 
> Properties props = new Properties();
> ClassLoader myLoader = this.getClass().getClassLoader();
> props.load(myLoader.getResourceAsStream("amq.properties"));
> javax.naming.Context ctx = new InitialContext(props);     
> 
> See the attached sample jndi.properties file
> 
>  http://www.nabble.com/file/p16959605/jndi.properties jndi.properties 
> 
> Hope this helps.
> 
> Joe
> Goto www.ttmsolutions.com for a free ActiveMQ user guide
> 
> 
> 
> DA wrote:
>> 
>> i have created ActiveMQConnectionFactory  and it is working .But i want
>> the code to be generic so that even if i change messaging from activemq
>> to some other thing my code should work fine with out any changes.
>> 
>> 
>> James.Strachan wrote:
>>> 
>>> From an external client its often easier to just create an
>>> ActiveMQConnectionFactory rather than use JNDI. Or use Spring
>>> 
>>> 2008/4/29 DA <di...@pramati.com>:
>>>>
>>>>  Hi all,
>>>>  My application runs on jboss and i configured activewq for
>>>>  messsaging.everything is working fine messaging r flowing fine.Now i
>>>> want to
>>>>  send message to this queue from an external client a main program.
>>>>  i created the initialcontext with the properties from jboss
>>>>
>>>>  java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
>>>>  java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
>>>>
>>>>  now when i did a lookup for connectionfatory it is returning me null.
>>>> On
>>>>  debugging it i found that it actually found the connectionfactory but
>>>> in
>>>>  NamingManager.getObjectInstance at
>>>>
>>>>  factory = getObjectFactoryFromReference(ref, f);
>>>>                 if (factory != null) {
>>>>                     return factory.getObjectInstance(ref, name,
>>>> nameCtx,
>>>>                                                      environment);
>>>>                 }
>>>>
>>>>  it is returning null. Before going there, ref is holding the
>>>>  connectionfactory instance.
>>>>
>>>>  i observed that factory is
>>>> "org.jboss.util.naming.NonSerializableFactory"
>>>>
>>>>  in that factory.getObjectInstance it is looking for 
>>>> connectionfactoryName
>>>>  in a map and simply returning null from there.
>>>>
>>>>  can any one tell me what is happening there and what is wrong in my
>>>> code.
>>>>
>>>>  Thanks in advance.
>>>>   DA
>>>>  --
>>>>  View this message in context:
>>>> http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
>>>>  Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>>
>>>>
>>> 
>>> 
>>> 
>>> -- 
>>> James
>>> -------
>>> http://macstrac.blogspot.com/
>>> 
>>> Open Source Integration
>>> http://open.iona.com
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16961293.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: sending message from an external client

Posted by ttmdev <jo...@ttmsolutions.com>.
Yup, referencing ActiveMQ objects from your code nails your application to
ActiveMQ and makes it non-portable. It defeats the purpose of using the JMS.
If you're running an external (standalone) client, Spring would be a good
way to go, but if you want to still use the JNDI, then simply create a
jndi.properties file and put it in your CLASSPATH. You can then get the
initial context and a particular factory as follows. 

Context ctx = new InitialContext();            
ConnectionFactory factory = (javax.jms.ConnectionFactory) 
            ctx.lookup("localConnectionFactory");       

You could also reference some other unique *.properties files and load  that
one as follows

Properties props = new Properties();
ClassLoader myLoader = this.getClass().getClassLoader();
props.load(myLoader.getResourceAsStream("amq.properties"));
javax.naming.Context ctx = new InitialContext(props);     

See the attached sample jndi.properties file

http://www.nabble.com/file/p16959605/jndi.properties jndi.properties 

Hope this helps.

Joe
Goto www.ttmsolutions.com for a free ActiveMQ user guide



DA wrote:
> 
> i have created ActiveMQConnectionFactory  and it is working .But i want
> the code to be generic so that even if i change messaging from activemq to
> some other thing my code should work fine with out any changes.
> 
> 
> James.Strachan wrote:
>> 
>> From an external client its often easier to just create an
>> ActiveMQConnectionFactory rather than use JNDI. Or use Spring
>> 
>> 2008/4/29 DA <di...@pramati.com>:
>>>
>>>  Hi all,
>>>  My application runs on jboss and i configured activewq for
>>>  messsaging.everything is working fine messaging r flowing fine.Now i
>>> want to
>>>  send message to this queue from an external client a main program.
>>>  i created the initialcontext with the properties from jboss
>>>
>>>  java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
>>>  java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
>>>
>>>  now when i did a lookup for connectionfatory it is returning me null.
>>> On
>>>  debugging it i found that it actually found the connectionfactory but
>>> in
>>>  NamingManager.getObjectInstance at
>>>
>>>  factory = getObjectFactoryFromReference(ref, f);
>>>                 if (factory != null) {
>>>                     return factory.getObjectInstance(ref, name, nameCtx,
>>>                                                      environment);
>>>                 }
>>>
>>>  it is returning null. Before going there, ref is holding the
>>>  connectionfactory instance.
>>>
>>>  i observed that factory is
>>> "org.jboss.util.naming.NonSerializableFactory"
>>>
>>>  in that factory.getObjectInstance it is looking for 
>>> connectionfactoryName
>>>  in a map and simply returning null from there.
>>>
>>>  can any one tell me what is happening there and what is wrong in my
>>> code.
>>>
>>>  Thanks in advance.
>>>   DA
>>>  --
>>>  View this message in context:
>>> http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
>>>  Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
>> 
>> -- 
>> James
>> -------
>> http://macstrac.blogspot.com/
>> 
>> Open Source Integration
>> http://open.iona.com
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16959605.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: sending message from an external client

Posted by James Strachan <ja...@gmail.com>.
2008/4/29 DA <di...@pramati.com>:
>
>  i have created ActiveMQConnectionFactory  and it is working .But i want the
>  code to be generic so that even if i change messaging from activemq to some
>  other thing my code should work fine with out any changes.

Use Spring then?
-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Re: sending message from an external client

Posted by DA <di...@pramati.com>.
i have created ActiveMQConnectionFactory  and it is working .But i want the
code to be generic so that even if i change messaging from activemq to some
other thing my code should work fine with out any changes.


James.Strachan wrote:
> 
> From an external client its often easier to just create an
> ActiveMQConnectionFactory rather than use JNDI. Or use Spring
> 
> 2008/4/29 DA <di...@pramati.com>:
>>
>>  Hi all,
>>  My application runs on jboss and i configured activewq for
>>  messsaging.everything is working fine messaging r flowing fine.Now i
>> want to
>>  send message to this queue from an external client a main program.
>>  i created the initialcontext with the properties from jboss
>>
>>  java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
>>  java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
>>
>>  now when i did a lookup for connectionfatory it is returning me null. On
>>  debugging it i found that it actually found the connectionfactory but in
>>  NamingManager.getObjectInstance at
>>
>>  factory = getObjectFactoryFromReference(ref, f);
>>                 if (factory != null) {
>>                     return factory.getObjectInstance(ref, name, nameCtx,
>>                                                      environment);
>>                 }
>>
>>  it is returning null. Before going there, ref is holding the
>>  connectionfactory instance.
>>
>>  i observed that factory is
>> "org.jboss.util.naming.NonSerializableFactory"
>>
>>  in that factory.getObjectInstance it is looking for 
>> connectionfactoryName
>>  in a map and simply returning null from there.
>>
>>  can any one tell me what is happening there and what is wrong in my
>> code.
>>
>>  Thanks in advance.
>>   DA
>>  --
>>  View this message in context:
>> http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
>>  Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> James
> -------
> http://macstrac.blogspot.com/
> 
> Open Source Integration
> http://open.iona.com
> 
> 

-- 
View this message in context: http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16958447.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: sending message from an external client

Posted by James Strachan <ja...@gmail.com>.
>From an external client its often easier to just create an
ActiveMQConnectionFactory rather than use JNDI. Or use Spring

2008/4/29 DA <di...@pramati.com>:
>
>  Hi all,
>  My application runs on jboss and i configured activewq for
>  messsaging.everything is working fine messaging r flowing fine.Now i want to
>  send message to this queue from an external client a main program.
>  i created the initialcontext with the properties from jboss
>
>  java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
>  java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
>
>  now when i did a lookup for connectionfatory it is returning me null. On
>  debugging it i found that it actually found the connectionfactory but in
>  NamingManager.getObjectInstance at
>
>  factory = getObjectFactoryFromReference(ref, f);
>                 if (factory != null) {
>                     return factory.getObjectInstance(ref, name, nameCtx,
>                                                      environment);
>                 }
>
>  it is returning null. Before going there, ref is holding the
>  connectionfactory instance.
>
>  i observed that factory is "org.jboss.util.naming.NonSerializableFactory"
>
>  in that factory.getObjectInstance it is looking for  connectionfactoryName
>  in a map and simply returning null from there.
>
>  can any one tell me what is happening there and what is wrong in my code.
>
>  Thanks in advance.
>   DA
>  --
>  View this message in context: http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
>  Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>



-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://open.iona.com

Re: sending message from an external client

Posted by Luiz Mendes Almeida <lu...@gmail.com>.
Hi.

  I think you can't get the jboss context using an external application.
  My advice is to create a different context to connect to this queue.
  I hope help you.

Dwight.

2008/4/29 DA <di...@pramati.com>:

>
> Hi all,
> My application runs on jboss and i configured activewq for
> messsaging.everything is working fine messaging r flowing fine.Now i want
> to
> send message to this queue from an external client a main program.
> i created the initialcontext with the properties from jboss
>
> java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
> java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
>
> now when i did a lookup for connectionfatory it is returning me null. On
> debugging it i found that it actually found the connectionfactory but in
> NamingManager.getObjectInstance at
>
> factory = getObjectFactoryFromReference(ref, f);
>                if (factory != null) {
>                    return factory.getObjectInstance(ref, name, nameCtx,
>                                                     environment);
>                }
>
> it is returning null. Before going there, ref is holding the
> connectionfactory instance.
>
> i observed that factory is "org.jboss.util.naming.NonSerializableFactory"
>
> in that factory.getObjectInstance it is looking for  connectionfactoryName
> in a map and simply returning null from there.
>
> can any one tell me what is happening there and what is wrong in my code.
>
> Thanks in advance.
>  DA
> --
> View this message in context:
> http://www.nabble.com/sending-message-from-an-external-client-tp16956671s2354p16956671.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>