You can always use the basic following method:

<bean class="test.FileLinkManager">
 <property name="client">
   <bean class="org.apache.servicemix.client.DefaultServiceMixClient">
     <constructor-arg ref="jbi" />
   </bean>
 </property>
</bean>

On 10/23/06, AndreasH <[EMAIL PROTECTED]> wrote:

Hi

I was now able to test both your suggestions, however, without much luck.
First of all, as you rightly observed, I am not using SU's, rather I am
working with a static configuration in my WAR file (applicationContext.xml).
Now I get the following problems:

1) On injecting the context, I get no exception and no stack trace, but the
following message in my trace log:

2006-10-20 16:05:57,184 DEBUG [org.apache.servicemix.jsr181.Jsr181Component]
Querying service description for
ServiceEndpoint[service={http://servicemix.apache.org/cheese/}filePoller,endpoint=filePoller]
2006-10-20 16:05:57,199 DEBUG [org.apache.servicemix.jsr181.Jsr181Component]
Unable to inject ComponentContext:
test.FileLinkManager.setContext(javax.jbi.component.ComponentContext)
2006-10-20 16:05:57,199 DEBUG [org.apache.servicemix.jsr181.Jsr181Component]
Component started

and the context is never set!

2) On trying out the client approach, I get the following stack trace:

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name '(inner bean)#4': FactoryBean threw exception on object creation;
nested exception is java.lang.NullPointerException

Caused by:

java.lang.NullPointerException

        at
org.apache.servicemix.client.DefaultServiceMixClient.<init>(DefaultServiceMixClient.java:79)

        at
org.apache.servicemix.client.DefaultServiceMixClient.<init>(DefaultServiceMixClient.java:67)

        at
org.apache.servicemix.jbi.framework.ClientFactory.createClient(ClientFactory.java:58)

        at
org.apache.servicemix.client.ClientFactoryBean.getObject(ClientFactoryBean.java:103)

        at
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectFromFactoryBean(AbstractBeanFactory.java:994)

        at
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:966)

        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanDefinition(BeanDefinitionValueResolver.java:202)

        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:116)

        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955)

        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)

        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)

i.e., the container reference has not been set somehow, and is leading to a
NPE!

If I look further up in my trace log, I find the following entry, which
might be of interest in this context:

2006-10-23 09:05:51,453 WARN
[org.apache.servicemix.jbi.framework.ClientFactory] Cound not start
ClientFactory: javax.naming.CommunicationException [Root exception is
java.io.NotSerializableException:
org.apache.servicemix.jbi.framework.ClientFactory]


My applicationConetxt.xml looks as follows:

<beans xmlns:sm="http://servicemix.apache.org/config/1.0";
  xmlns:http="http://servicemix.apache.org/http/1.0";
  xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0";
  xmlns:my="http://servicemix.apache.org/demo/";
  xmlns:foo="http://servicemix.apache.org/cheese/";>

  <!-- the JBI container -->
  <sm:container id="jbi"
      rootDir="#rootDir"
      useMBeanServer="false"
                  createMBeanServer="false"
      installationDirPath="#installDir"
      deploymentDirPath="#deployDir"
                  monitorInstallationDirectory="true"
      dumpStats="true"
                  statsInterval="10"
      transactionManager="#transactionManager"
      depends-on="broker"
      createJmxConnector="false">

    <sm:activationSpecs>

      <sm:activationSpec>
        <sm:component>
          <jsr181:component>
            <jsr181:endpoints>
              <jsr181:endpoint annotations="none" service="foo:filePoller"
endpoint="filePoller">
                <jsr181:pojo>
                  <bean class="test.FileLinkManager">
                    <property name="client">
                      <sm:client container="#jbi" />
                    </property>
                      </bean>
                </jsr181:pojo>
              </jsr181:endpoint>
            </jsr181:endpoints>
          </jsr181:component>
        </sm:component>
      </sm:activationSpec>

     ....

Any help is as always greatly appreciatd.

Regards

Andreas





gnodet wrote:
>
> You do not use SU, right ? The context bean is created
> when you deploy an SU with the xbean.xml config file.
>
> If you want to configure the context on the pojo directly,
> you can just add a
>    public void setContext(ComponentContext context)
> method to your pojo.
> It should be called.
>
> If you use a static configuration file (no SUs), you can
> also create a client:
>    <bean ...>
>      <property name="client">
>        <sm:client container="#jbi" />
>     </property>
> and defining the following method on your pojo:
>     public void setClient(ServiceMixClient client)
>
>
>
> On 10/20/06, AndreasH <[EMAIL PROTECTED]> wrote:
>>
>> Hi
>>
>> I am trying to deploy a JSR181 endpoint in the servicemix.war and to
>> inject
>> the component context. My applicationContext.xml looks as follows:
>>
>>       <beans xmlns:sm="http://servicemix.apache.org/config/1.0";
>>   xmlns:http="http://servicemix.apache.org/http/1.0";
>>   xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0";
>>   xmlns:my="http://servicemix.apache.org/demo/";
>>   xmlns:foo="http://servicemix.apache.org/cheese/";>
>>
>> ...
>>       <sm:activationSpec>
>>         <sm:component>
>>           <jsr181:component>
>>             <jsr181:endpoints>
>>               <jsr181:endpoint annotations="none"
>> service="foo:filePoller"
>> endpoint="filePoller">
>>                 <jsr181:pojo>
>>                   <bean class="test.FileLinkManager">
>>                     <property name="context" ref="context" />
>>                   </bean>
>>                 </jsr181:pojo>
>>               </jsr181:endpoint>
>>             </jsr181:endpoints>
>>           </jsr181:component>
>>         </sm:component>
>>       </sm:activationSpec>
>>
>> ...
>>
>> Upon deploying I get the error that no bean with reference "context" can
>> be
>> found:
>>
>> org.springframework.beans.factory.BeanCreationException: Error creating
>> bean
>> with name 'test.FileLinkManager' defined in ServletContext resource
>> [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean
>> 'context' while setting bean property 'context'; nested exception is
>> org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
>> named 'context' is defined
>> Caused by:
>> org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
>> named 'context' is defined
>>         at
>> 
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:355)
>>         at
>> 
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:800)
>>         at
>> 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:237)
>>         at
>> 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
>>         at
>> 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246)
>>         at
>> 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
>>         at
>> 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955)
>>         at
>> 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)
>>         at
>> 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)
>>         at
>> 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanDefinition(BeanDefinitionValueResolver.java:198)
>>
>> Am I missing something? Incidentally, I am using ServiceMix3.1 from SVN.
>> According to the mailing list, injecting the context should have been
>> added
>> for V3.0 already, so I assumed I should be fine.
>>
>> Any help is greatly appreciated.
>>
>> Regards
>>
>> Andreas
>> --
>> View this message in context:
>> 
http://www.nabble.com/ServiceMix.war-and-JSR181-context-tf2480516.html#a6916913
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
>
>
> --
> Cheers,
> Guillaume Nodet
>
>

--
View this message in context: 
http://www.nabble.com/ServiceMix.war-and-JSR181-context-tf2480516.html#a6949411
Sent from the ServiceMix - User mailing list archive at Nabble.com.




--
Cheers,
Guillaume Nodet

Reply via email to