Sami Dalouche wrote:
Sorry,

actually, my diagnostic was false...

There was an exception that I didn't see, and I can actually use the
jmsConnectionFactory that I get from a JNDI context.
(which way is preferred, btw ? PooledConnectionFactory, or from JNDI ?).

But the problem is even weirder...
I'm using Geronimo M4 which embeds ActiveMQ 3.1-M5. Topics+Queues are configured
using Resource Adapters.

I was previously using ActiveMQ 3.0 by mistake, and it was in the classpath. but
it worked fine. and I decided to switch to 3.1-M5 to prevent any problem I might
get by using 2 versiosn of activeMQ in the same classpath..
and guess what ?? This led to an exception :
could not find class for resource : services/org/activemq/transport/rmi

Looks like you're trying to connect to ActiveMQ using a bad URL of the form "rmi://localhost" which is an invalid URL to connect to ActiveMQ. Maybe you're tinkering with the ActiveMQ JNDI initial context factory? Or just a typo in your JNDI configuration.


while trying to get the JNDI object.Waoh, so I reverted to using 3.0 and it
works, but it's so weird...

If you're using Spring then I'd avoid JNDI where possible - its just another level of indirection and good cause of lots of errors and confusion :)

James


Regards,
Sami Dalouche


Selon Sami Dalouche <[EMAIL PROTECTED]>:


Hi,

OK, so at least it's normal I get the problem :) I was thinking I was getting
some weird problem again .... :)

Concerning the IllegalArgumentException, actually, the problem seemed to be
that
instead of getting a JMS factory using :
 <bean id="jmsFactory" class="org.activemq.pool.PooledConnectionFactory">
   <property name="connectionFactory">
     <bean class="org.activemq.ActiveMQConnectionFactory">
       <property name="brokerURL">
         <value>tcp://localhost:61616</value>
       </property>
     </bean>
   </property>
 </bean>

I was getting it from a JNDI context...
        <bean id="jmsConnectionFactory"
       class="org.springframework.jms.connection.SingleConnectionFactory">
       <property name="targetConnectionFactory">
           <ref bean="internalJmsQueueConnectionFactory"/>
       </property>
   </bean>

   <bean id="internalJmsQueueConnectionFactory"
       class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiTemplate">
           <ref bean="jndiTemplate"/>
       </property>
       <property name="jndiName">
           <value>${jms.connectionFactoryName}</value>
       </property>
   </bean>
and apparently, something was wrong with one of thoese compoenents that used
the
factory..

component id="inputSender" service="my:inputSender"
class="org.servicemix.components.jms.JmsSenderComponent">
       <property name="template">
         <bean class="org.springframework.jms.core.JmsTemplate">
           <property name="connectionFactory">
             <ref bean="jmsFactory"/>
           </property>
           <property name="defaultDestinationName" value="TestTopic"/>
           <property name="pubSubDomain" value="true"/>
         </bean>
       </property>
     </component>

Any specific reason why I can't use a factory that comes from JNDI ?
Regards,
Sami Dalouche


Selon James Strachan <[EMAIL PROTECTED]>:


Sami Dalouche wrote:

Hi,

Some more thoughts about this problem : It's really weird...

using the standard way of launching Spring files to launch a serviceMix
spring-based XML descriptor inside a web WAR leads to the "no grammar

found"

error.
<context-param>
          <param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/servicemix.xml</param-value>
</context-param>
        <listener>


<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

        </listener>

Yeah - I think we need to make a non-validating version of Spring's
ContextLoaderListener. Basically we don't enable validation by default
(as the DTD can't handle namespaces, something we need quite a bit in
ServiceMix).


However, if I do a dirty hack, only use a standard Spring container here

that

launches a class that will
context = new ClassPathXmlApplicationContext(configFiles);
then it's ok, I don't get the previous error...
Is is supposed to behave that way ???

In any case, I'm getting an exception I don't know about :
org.springframework.beans.factory.BeanCreationException: Error creating

bean wit

h name 'jbi' defined in class path resource [spring/servicemix-ext.xml]:

Initial

ization of bean failed; nested exception is

java.lang.IllegalArgumentException:

null source
java.lang.IllegalArgumentException: null source
       at java.util.EventObject.<init>(Unknown Source)
       at javax.management.Notification.<init>(Unknown Source)
       at javax.management.AttributeChangeNotification.<init>(Unknown

Source)

       at

org.servicemix.jbi.management.BaseStandardMBean.sendAttributeChangeNo

tification(BaseStandardMBean.java:438)
       at

org.servicemix.jbi.management.BaseStandardMBean.updateAttribute(BaseS

tandardMBean.java:221)

What does "null source" mean ? does it mean there is no component that

inputs

data into the JBI engine ?

Could you provide the Spring.xml that causes this exception? I wonder if
more of the stack trace might help figure it out.

--

James
-------
http://radio.weblogs.com/0112098/






----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.







----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.



--

James
-------
http://radio.weblogs.com/0112098/

Reply via email to