Hi

Its usually harder for us to help when using commercial products like
WebLogic as its not something we can get hands on to reproduce the
issue.

And your problem seems more related to using WebLogic and not as much
about Apache Camel.
Maybe you need to ask on at Oracle WL user forum / report ticket for
commerical support from them or something.

You can also try to do a thread dump when it "hangs" to see if you can
spot the hanging thread and see what class/method its "hanging" at
that can help you track down the issue, or useful information for
Oracle support team to help you.

On Mon, Jul 11, 2016 at 3:36 PM, jlidholm <johnny.lidh...@gmail.com> wrote:
> Hi,
>
> I'm trying to use a custom POJO configured as a bean in a Camel XML DSL
> route.
> This POJO in its constructor tries to call two static methods in the Oracle
> Weblogic Availability Helper class. But this call never returns, whether I'm
> stepping in debug or just running it.
>
> The calls to the helper class run fine when running locally from a plain
> Main method in a local class in Eclipse (not as a part of a Camel route).
>
> The code is the sample code from the Oracle documentation
> (https://docs.oracle.com/cd/E17904_01/web.1111/e13727/dahelper.htm#JMSPG935):
> And it hangs on the call "JMSDestinationAvailabilityHelper.getInstance()".
> When I instead sent the JMSDestinationAvailabilityHelper in as a bean-ref to
> the POJO bean, I got passed that call but got stuck on the second
> "dah.register(...)" never returning.
>
> --- === Oracle Sample code BEGIN === ---
> /import java.util.Hashtable;
> import javax.naming.Context;
> import weblogic.jms.extensions.JMSDestinationAvailabilityHelper;
>
> Hashtable contextProps = new Hashtable();
> contextProps.put(javax.naming.Context.PROVIDER_URL, myURL);
> contextProps.put(Context.INITIAL_CONTEXT_FACTORY,
> "weblogic.jndi.WLInitialContextFactory");
> JMSDestinationAvailabilityHelper dah =
> JMSDestinationAvailabilityHelper.getInstance();
>
> RegistrationHandler rh = dah.register(
>    contextProperties,
>    destinationJNDIName,
>    myDestinationAvailableListener
> )/
> --- === Oracle Sample code END === ---
>
> Not sure I'm making my problem clear, but would appreciate any hints if
> anyone gets what might be going on.
> Is there some other way I need to wire my bean? Or define the POJO?
>
> Parts of my camel-context.xml:
>     <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
>       <property name="environment">
>          <props>
>            <prop
> key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
>            <prop key="java.naming.provider.url">${weblogicJMS.url}</prop>
>            <prop
> key="java.naming.security.principal">${weblogicJMS.username}</prop>
>            <prop
> key="java.naming.security.credentials">${weblogicJMS.password}</prop>
>          </props>
>        </property>
>     </bean>
>
>     <bean id="testClassResolve"
> class="weblogic.jms.extensions.JMSDestinationAvailabilityHelper"/>
>
>     <bean id="topicPollH08"
> class="camel.engine.jms.JMSTopicPollingProcessor" scope="singleton">
>       <constructor-arg index="0" ref="jndiTemplate"/>
>       <constructor-arg index="1" value="${weblogicJMS.topic.name}"/>
>       <constructor-arg index="2" ref="testClassResolve"/>
>     </bean>
>
> The code of the POJO:
> package camel.engine.jms;
>
>
> import java.util.Hashtable;
> import java.util.List;
>
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
> import org.springframework.jndi.JndiTemplate;
>
> import weblogic.jms.extensions.DestinationAvailabilityListener;
> import weblogic.jms.extensions.DestinationDetail;
> import weblogic.jms.extensions.JMSDestinationAvailabilityHelper;
> import weblogic.jms.extensions.RegistrationHandle;
>
>
>
> //
> // The JMSTopicPollingProcessor polls a given JMS Topic and returns the
> first message to the camel Exchange.
>
> public class JMSTopicPoller implements DestinationAvailabilityListener {
>
>   private static final Logger log =
> LoggerFactory.getLogger(JMSTopicPoller.class);
>   private JndiTemplate jndiTemplate;
>   private JMSDestinationAvailabilityHelper dah;
>   private RegistrationHandle rh;
>
>   private String topicName;
>
>   public JMSTopicPoller(JndiTemplate jndiTemplate, String topicName,
> JMSDestinationAvailabilityHelper dah) throws Exception {
>     this.jndiTemplate = jndiTemplate;
>     this.topicName = topicName;
>     this.dah = dah;
>     initConnection();
>   }
>
>   private void initConnection() throws Exception {
>
>     Hashtable<String, String> contextProps = new Hashtable<String,
> String>();
>     for(final String name:
> jndiTemplate.getEnvironment().stringPropertyNames()) {
>       contextProps.put(name,
> jndiTemplate.getEnvironment().getProperty(name));
>     }
>
>     log.debug("JMSTopicPollingProcessor - trying to register Weblogic
> Destination Availability listener");
>
>     rh = dah.register(
>        contextProps,
>        topicName,
>        this
>     );
>
>     log.debug("JMSTopicPollingProcessor - Registered Weblogic Destination
> Avalability listener");
> }
>
>   @Override
>   public void onDestinationsAvailable(String arg0, List<DestinationDetail>
> arg1) {
>     log.debug("Destinations available");
>   }
>
>   @Override
>   public void onDestinationsUnavailable(String arg0, List<DestinationDetail>
> arg1) {
>     log.debug("Destinations unavailable");
>
>   }
>
>   @Override
>   public void onFailure(String arg0, Exception arg1) {
>     log.debug("Failure!");
>   }
> }
>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/Camel-XML-DSL-route-custom-bean-for-testing-Weblogic-Availiability-helper-hangs-on-startup-tp5785015.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to