java - ActiveMQ embedded broker accessible via Weblogic servlet -
i'd following , i'm not quite sure if i'm not wasting time: i'm trying run activemq embedded broker inside weblogic servlet. idea is, clients able connect jms via http , embedded broker serve requests. know crazy idea, it's legacy application , lot of client code depends on jms. idea switch connection string , add libraries clients. works fine when create tcp connection, have no idea how map servlet internal broker
the restrictions these:
- no changes in weblogic configuration(like datasources, bridges, jms etc)
- no spring
- http only
this servlet definition web.xml:
<servlet> <servlet-name>activemqservlet</servlet-name> <servlet-class>com.mycompany.activemqservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>activemq</servlet-name> <url-pattern>/servlet/activemqservlet</url-pattern> </servlet-mapping>
important parts of servlet:
public class activemqservlet extends httpservlet { private brokerservice broker; private static final log log = logfactory.getlog(new object() { }.getclass().getenclosingclass()); @override public void init() throws servletexception { log.info("load activemq"); // configure broker try { transportconnector connector = new transportconnector(); connector.seturi(new uri(active_mq_url)); broker = new brokerservice(); broker.addconnector(connector); broker.start(); log.info("activemq loaded succesfully"); } catch (exception e) { log.error("unable load activemq!", e); } } @override public void service(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { log.info("received call.... "); log.info("request: "+request); //todo }
the problem have no idea how request/response mapping between service method of servlet , internal activemq broker. thing is, i'm trying solve classpath clashes caused slf4j used activemq broker , spent hours on it. maybe i'm doing impossible/really stupid.
when i'm trying connect via simple client, i'm getting exception
javax.jms.jmsexception: not connect broker url: http://localhost:8888/myapp/servlet/activemqservlet. reason: java.io.ioexception: failed perform on: http://localhost:8888/myapp/servlet/activemqservlet response was: not found @ org.apache.activemq.util.jmsexceptionsupport.create(jmsexceptionsupport.java:35) @ org.apache.activemq.activemqconnectionfactory.createactivemqconnection(activemqconnectionfactory.java:293) @ org.apache.activemq.activemqconnectionfactory.createconnection(activemqconnectionfactory.java:191) ... caused by: java.io.ioexception: failed perform on: http://localhost:8888/myapp/servlet/activemqservlet response was: not found @ org.apache.activemq.transport.http.httpclienttransport.dostart(httpclienttransport.java:275) @ org.apache.activemq.util.servicesupport.start(servicesupport.java:55)
while doing this, code in servlet not executed. servlet path fine. if open in browser, got empty page , log message.
i'm using activemq 5.8.0 , weblogic 10.3.6
i'm trying similar, , have found messagelistenerservlet - i'm still searching examples on setting (i'm relatively new @ dealing servlets) think it's supposed allow sort of thing. though think you're main application needs 1 setting brokerservice @ startup, , servlet needs reference address. in case, aren't using websphere, general premise of "talk embedded activemq instance external sources via http" same.
Comments
Post a Comment