JMS and FireWall support

hi all,
we have a central server connected to many remote servers over the internet.
Some of the clients have permanent public IP but some of them are either behind a firewall or are dialuped ones.
How can my JMS application running on the central server communicate with these servers and send data across.
Does JMS support data transfer across firewall ?
suneesh.

JMS is simply a collection of classes and interfaces defined by Sun that provide a consistent way of publishing and consuming data via topics and queues. JMS does not define how security, firewalls, management and a whole host of other really important stuff should be handled.
For these important features you need to look at specific implementations. There are free implementations as well as a large group of vendors all providing additional functionality on top of JMS.
As one of these vendors I would like to introduce you to Nirvana, our messaging solution delivering JMS 1.1 functionality.
Nirvana (http://www.my-channels.com/products/nirvana.html) has been designed to be deployed externally between an organization, its clients and its partners. It has been designed to accommodate both high and low speed connections ensuring that the lack of performance from one does not impact the other. It has been designed to traverse firewalls and proxy servers.
Take a look at it in action on http://showcase.my-channels.com/
Regards,
Paul Brant
my-Channels - Technologies working together
http://www.my-channels.com/

Similar Messages

  • JMS and Firewall

    Hi,
    we want to connect a JMS client to JMS-Queue that is hosted on a WebAS 6.40. As I know, the transport protocol used is P4. The documentation of the P4 service says that it can be tunneled via http or ssl. Is this possible for my JMS connection, two?
    How do I have to configure this on both (server, client) sides?
    Hope anybody is able to help.
    Regards,
      Marc

    Hi Marc,
    I cannot advise on the setup of JMS with a firewall, but at least I can clarify one misunderstanding: The JMS implementation in WebAS 6.40 does NOT use p4 as the transport protocol, but it uses its own protocol. The information you find on HTTP tunneling of p4 can therefore   not be applied to JMS.
    Best regards,
    Sabine

  • Can't update iOS 8 on my iPhone5 through iTunes on Windows 8 (error 3004, 3194). Updated host file, opened port 80, 443; turned off security system and firewall, etc. But nothing works. How to solve this problem?

    Can't update iOS 8 on my iPhone5 through iTunes on Windows 8 (error 3004, 3194). Updated host file, opened port 80, 443; turned off security system and firewall, etc. But nothing works. How to solve this problem?

    Hi the_mad_movies,
    It seems like this article will be the best option for addressing this issue:
    Error 3194, Error 17, or "This device isn't eligible for the requested build"
    http://support.apple.com/kb/ts4451
    Thanks for coming to the Apple Support Communities!
    Cheers,
    Braden

  • Javax.jms.JMSException: Not supported in XA-backed session outside globaltx

    I am trying to setup OracleOJMS provider and tries to access queue and post to queue from a normal jsp for testing.
    I am getting the following
    code:
    javax.jms.JMSException: Not supported in XA-backed session outside global transaction
         at oracle.j2ee.ra.jms.generic.RAUtils.make(RAUtils.java:525)
         at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:199)
         at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:210)
         at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.prepareForSend(CommonProducerWrapper.java:350)
         at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.send(CommonProducerWrapper.java:159)
         at ResourceProvider.jspService(_ResourceProvider.java:112)
         at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.1.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:453)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:591)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:515)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:711)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:368)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:216)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)
         at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
         at java.lang.Thread.run(Thread.java:595)
    Steps i have done
    ResourceProvider.jsp
    code:
    <!-- JSP Imports -->
    <%@ page import="javax.jms.QueueConnectionFactory "%>
    <%@ page import="javax.jms.XAQueueConnectionFactory "%>
    <%@ page import="javax.jms.QueueConnection "%>
    <%@ page import="javax.jms.QueueSession "%>
    <%@ page import="javax.jms.Queue "%>
    <%@ page import="javax.jms.QueueSender "%>
    <%@ page import="javax.jms.Message "%>
    <%@ page import="javax.jms.Session "%>
    <%@ page import="javax.naming.Context "%>
    <%@ page import="javax.naming.InitialContext "%>
    <html>
    <head>
    <title>
    Configuration of ResourceProvider for Advanced Queueing
    </title>
    </head>
    <body>
    <form name="TestResourceProvider" method="GET">
    <%
    // Check if the message has to be enqueued
    if (request.getParameter("Message") != null){
    Context jndiContext = new InitialContext();
    XAQueueConnectionFactory queueCF = (XAQueueConnectionFactory)jndiContext.lookup
    ("java:comp/env/jms/InQueueCF");
    Queue queue = (Queue)jndiContext.lookup("java:comp/env/jms/InQueue");
    QueueConnection queueConnection = queueCF.createQueueConnection();
    // Start the Connection
    queueConnection.start();
    QueueSender sender = queueSession.createSender(queue);
    Message msg = queueSession.createTextMessage(request.getParameter("Message"));
    sender.send(msg);
    queueSession.commit();
    sender.close();
    queueSession.close();
    queueConnection.close();
    %>
    <%
    }else{
    // User can enter the message to be enqueued through here
    %>
    Enter the message to be enqueued
    <INPUT type="text" name="Message">
    <br><br>
    <input type="Submit" value="Enqueue Message">
    <%
    %>
    </form>
    </body>
    </html>
    My Steps for OJMS PRovider
    1. Creating AQ queue in DB
    2. configuration of resource adapter and provider
    3. configuration of connection factories for resourceadapter[jmsconnector]
    code:
    1. Created the Queue table in DB using the sql
    DROP USER jmsuser CASCADE;
    GRANT connect, resource,AQ_ADMINISTRATOR_ROLE TO jmsuser IDENTIFIED BY jmsuser;
    GRANT execute ON sys.dbms_aqadm TO jmsuser;
    GRANT execute ON sys.dbms_aq TO jmsuser;
    GRANT execute ON sys.dbms_aqin TO jmsuser;
    GRANT execute ON sys.dbms_aqjms TO jmsuser;
    connect jmsuser/jmsuser;
    -- Create table to hold the queue, then create queue.
    -- For topics multiple_consumers must be true
    BEGIN
    DBMS_AQADM.CREATE_QUEUE_TABLE( Queue_table => 'SMSCP_INQTBL', Queue_payload_type => 'SYS.AQ$_JMS_MESSAGE',
    sort_list => 'PRIORITY,ENQ_TIME', multiple_consumers => false, compatible => '8.1.5');
    DBMS_AQADM.CREATE_QUEUE( Queue_name => 'SMSCP_INQ', Queue_table => 'SMSCP_INQTBL');
    DBMS_AQADM.START_QUEUE(queue_name => 'SMSCP_INQ');
    END;
    quit;
    Now our queue Name is queue Name : SMSCP_INQ table Name: SMSCP_INQTBL
    2. Creating the Cp and datasource for the db [jmsuser] to make java to access queue
    Creating ConnectionPool jmsDBPool
    Creating DataSource jmsDBDataSource
    Jndi jdbc jdbc/JMSDBDS
    After creating, i got the following data-sources.xml
    DATASOURCES.XML
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <data-sources xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd" schema-major-version="10" schema-minor-version="1">
    <!-- default one comes with oracle shipping -->
    <managed-data-source connection-pool-name="Example Connection Pool" jndi-name="jdbc/OracleDS" name="OracleDS"/>
    <!-- New one Created -->
         <managed-data-source connection-pool-name="jmsDBPool" jndi-name="jdbc/JMSDBDS" name="jmsDBDataSource"/>
    <!-- default one comes with oracle shipping -->
    <connection-pool name="Example Connection Pool">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="scott" password="tiger" url="jdbc racle:thin:@//localhost:1521/ORCL"/>
    </connection-pool>
    <!-- New one Created -->
    <connection-pool name="jmsDBPool">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="jmsuser" password="jmsuser" url="jdbc racle:thin:@//localhost:1521/xe"/>
    </connection-pool>
    </data-sources>
    3. JMS Connector Task. Customising the ra.xml
    ra.xml
    <!-- resourceadapter -->
    <resourceadapter>
    <resourceadapter-class>oracle.j2ee.ra.jms.generic.JMSResourceAdapter</resourceadapter-class>
    <config-property>
    <config-property-name>lookupMethod</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>resourceProvider</config-property-value>
    </config-property>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    <!-- adminobject configuration -->
              <adminobject>
    <adminobject-interface>javax.jms.Queue</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectQueueImpl</adminobject-class>
    <config-property>
    <config-property-name>jndiName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>Queues/MY_QUEUE</config-property-value>
    </config-property>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    <!--
    <adminobject>
    <adminobject-interface>javax.jms.Topic</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl</adminobject-class>
    <config-property>
    <config-property-name>jndiName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>Topics/MY_TOPIC</config-property-value>
    </config-property>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    -->
    <adminobject>
    <adminobject-interface>javax.jms.Queue</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectQueueImpl</adminobject-class>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    <adminobject>
    <adminobject-interface>javax.jms.Topic</adminobject-interface>
    <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl</adminobject-class>
    <config-property>
    <config-property-name>resourceProviderName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>testResourceProvider</config-property-value>
    </config-property>
    </adminobject>
    </resourceadapter>
    4. Create a JMS Connector INstance
    oc4j-connectors.xml
         <connector name="testResourceAdapter" path="testResourceAdapter.rar">
              <config-property name="lookupMethod" value="resourceProvider"/>
              <config-property name="resourceProviderName" value="testResourceProvider"/>
              <!-- Default element generated by OC4J. Please uncomment and modify to suit your configuration needs.
              <adminobject-config location="">
                   <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectQueueImpl</adminobject-class>
                   <config-property name="jndiName" value="Queues/MY_QUEUE"/>
                   <config-property name="resourceProviderName" value="ojmsRP"/>
              </adminobject-config>
              -->
              <!-- Default element generated by OC4J. Please uncomment and modify to suit your configuration needs.
              <adminobject-config location="">
                   <adminobject-class>oracle.j2ee.ra.jms.generic.AdminObjectTopicImpl</adminobject-class>
                   <config-property name="jndiName" value="Topics/MY_TOPIC"/>
                   <config-property name="resourceProviderName" value="ojmsRP"/>
              </adminobject-config>
              -->
         </connector>
    5. RA Connection Factories
    <?xml version="1.0" encoding="UTF-8"?>
    <oc4j-connector-factories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/oc4j-connector-factories-10_0.xsd"
    schema-major-version="10"
    schema-minor-version="0">
    <connector-factory location="resourceAdapterXAQCF/MYXAQCF" connector-name="testResourceAdapter">
    <config-property name="jndiLocation" value="XAQueueConnectionFactories/XAQCF"/>
    <connection-pooling use="private">
    <property name="waitTimeout" value="300" />
    <property name="scheme" value="fixed_wait" />
    <property name="maxConnections" value="50" />
    <property name="minConnections" value="0" />
    </connection-pooling>
    <connectionfactory-interface>javax.jms.XAQueueConnectionFactory</connectionfactory-interface>
    </connector-factory>
    </oc4j-connector-factories>
    orion-web.xml
    <?xml version="1.0"?>
    <orion-web-app
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/orion-web-10_0.xsd"      deployment-version="10.1.3.1.0"
         deployment-time="1218369811921"
         jsp-cache-directory="./persistence"
         jsp-cache-tlds="standard"
         temporary-directory="./temp"
         context-root="/smscpReceiver"
    schema-major-version="10" schema-minor-version="0" >
         <!-- Uncomment this element to control web application class loader behavior.
              <web-app-class-loader search-local-classes-first="true" include-war-manifest-class-path="true" />
         -->
         <resource-ref-mapping name="jms/InQueueCF" location="resourceAdapterXAQCF/MYXAQCF" />
         <message-destination-ref-mapping location="resourceAdapterInQ/MYINQ" name="jms/InQueue">
              </message-destination-ref-mapping>
         <web-app>
         </web-app>
    </orion-web-app>
    web.xml
    <resource-ref>
         <res-ref-name>jms/InQueueCF</res-ref-name>
         <res-type>javax.jms.XAQueueConnectionFactory</res-type>
         <res-auth>Container</res-auth>
    </resource-ref>
    <message-destination-ref>
         <message-destination-ref-name>jms/InQueue</message-destination-ref-name>
         <message-destination-type>javax.jms.Queue</message-destination-type>
         <message-destination-usage>Produces</message-destination-usage>
         <message-destination-link>jms/InQueue</message-destination-link>
    </message-destination-ref>
    <message-destination>
    <message-destination-name>jms/InQueue</message-destination-name>
    </message-destination>

    Sorry for the jammed one
    Neat one.
    am trying to setup OracleOJMS provider and tries to access queue and post to queue from a normal jsp for testing.
    I am getting the following
    javax.jms.JMSException: Not supported in XA-backed session outside global transaction
    at oracle.j2ee.ra.jms.generic.RAUtils.make(RAUtils.java:525)
    at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:199)
    at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:210)
    at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.prepareForS
    INVOCATION
    <form name="TestResourceProvider" method="GET">
    <%
    // Check if the message has to be enqueued
    if (request.getParameter("Message") != null){
    Context jndiContext = new InitialContext();
    XAQueueConnectionFactory queueCF = (XAQueueConnectionFactory)jndiContext.lookup
    ("java:comp/env/jms/InQueueCF");
    Queue queue = (Queue)jndiContext.lookup("java:comp/env/jms/InQueue");
    QueueConnection queueConnection = queueCF.createQueueConnection();
    // Start the Connection
    queueConnection.start();
    QueueSender sender = queueSession.createSender(queue);
    Message msg = queueSession.createTextMessage(request.getParameter("Message"));
    sender.send(msg);
    queueSession.commit();
    sender.close();
    queueSession.close();
    queueConnection.close();
    %>
    <%
    }else{
    // User can enter the message to be enqueued through here
    %>
    Enter the message to be enqueued
    <INPUT type="text" name="Message">
    <br><br>
    <input type="Submit" value="Enqueue Message">
    <%
    %>
    </form>
    </body>
    </html>
    ---------------------

  • Firewall Support of Discoverer 4i

    We have been trying to set up dial-up access to Oracle Discoverer 4i.
    When our Firewall Administrator opened access to all ports it worked perfectly and very fast but obviously such a configuration is far from ideal. Our Administrator noted
    that when monitoring which ports were being utilised, Discoverer kept accessing different and random
    ports each time a connection was made. These were the ports utilised :-
    15000
    1104 XRL
    5432 Unassigned
    2267
    2358
    2280 lnvpoller
    2305 MT Scale server
    2327 xingcsm
    2368 opentable
    Which ports need specifically to be opened as surely this is not the proper manner that this should work? Our firewall is CheckPoint 4.1 Srv Pack 3.
    Thanks
    Stephanie Farrugia.

    You can configure the port that the Plus applet will communicate thru the firewall using the GateKeeper configuration tool ("gkconfig"). There's a chapter on firewall support in the Discoverer 4i Configuration Guide that should be helpful.
    BTW, it should be (by default) communicating over port 15000.
    null

  • Pros and Cons of using REST over JMS (and other technologies)

    Hey all,
    I am working on a project where we were using JMS initially to send messages between servers. Our front end servers have a RESTful API and use JEE6, with EJB 3.1 entity beans connected to a mysql database and so forth. The back end servers are more like "agents" so to speak.. we send some work for them to do, they do it. They are deployed in GlassFish 3.1 as well, but initially I was using JMS to listen to messages. I learned that JMS onMessage() is not threaded, so in order to facilitate handling of potentially hundreds of messages at once, I had to implement my own threading framework. Basically I used the Executor class. I could have used MDBs, but they are a lot more heavyweight than I needed, as the code within the onMessage was not using any of the container services.
    We ran into other issues, such as deploying our app in a distributed architecture in the cloud like EC2 was painful at best. Currently the cloud services we found don't support multi-cast so the nice "discover" feature for clustering JMS and other applications wasn't going to work. For some odd reason there seems to be little info on building out a scalable JEE application in the cloud. Even the EC2 techs, and RackSpace and two others had nobody that understood how to do it.
    So in light of this, plus the data we were sending via JMS was a number of different types that had to all be together in a group to be processed.. I started looking at using REST. Java/Jersey (JAX-RS) is so easy to implement and has thus far had wide industry adoption. The fact that our API is already using it on the front end meant I could re-use some of the representations on the back end servers, while a few had to be modified as our public API was not quite needed in full on the back end. Replacing JMS took about a day or so to put the "onmessage" handler into a REST form on the back end servers. Being able to submit an object (via JAXB) from the front servers to the back servers was much nicer to work with than building up a MapMessage object full of Map objects to contain the variety of data elements we needed to send as a group to our back end servers. Since it goes as XML, I am looking at using gzip as well, which should compress it by about 90% or so, making it use much less bandwidth and thus be faster. I don't know how JMS handles large messages. We were using HornetQ server and client.
    So I am curious what anyone thinks.. especially anyone that is knowledgeable with JMS and may understand REST as well. What benefits do we lose out on via JMS. Mind you, we were using a single queue and not broadcasting messages.. we wanted to make sure that one and only one end server got the message and handled it.
    Thanks..look forward to anyone's thoughts on this.

    851827 wrote:
    Thank you for the reply. One of the main reasons to switch to REST was JMS is strongly tied to Java. While I believe it can work with other message brokers that other platforms/languages can also use, we didn't want to spend more time researching all those paths. REST is very simple, works very well and is easy to implement in almost any language and platform. Our architecture is basically a front end rest API consumed by clients, and the back end servers are more like worker threads. We apply a set of rules, validations, and such on the front end, then send the work to be done to the back end. We could do it all in one server tier, but we also want to allow other 3rd parties to implement the "worker" server pieces in their own domains with their own language/platform of choice. Now, with this model, they simply provide a URL to send some REST calls to, and send some REST calls back to our servers.well, this sounds like this would be one of those requirements which might make jms not a good fit. as ejp mentioned, message brokers usually have bindings in multiple languages, so jms does not necessarily restrict you from using other languages/platforms as the worker nodes. using a REST based api certainly makes that more simple, though.
    As for load balancing, I am not entirely sure how glassfish or JBoss does it. Last time I did anything with scaling, it involved load balancers in front of servers that were session/cookie aware for stateful needs, and could round robin or based on some load factor on each server send requests to appropriate servers in a cluster. If you're saying that JBoss and/or GlassFish no longer need that.. then how is it done? I read up on HornetQ where a request sent to one ip/hornetq server could "discover" other servers in a cluster and balance the load by sending requests to other hornetq servers. I assume this is how the JEE containers are now doing it? The problem with that to me is.. you have one server that is loaded with all incoming traffic and then has to resend it on to other servers in the cluster. With enough load, it seems that the glassfish or jboss server become a load balancer and not doing what they were designed to do.. be a JEE container. I don't recall now if load balancing is in the spec or not..I would think it would not be required to be part of a container though, including session replication and such? Is that part of the spec now?you are confusing many different types of scaling. different layers of the jee stack scale in different ways. you usually scale/load balance at the web layer by putting a load balancer in front of your servers. at the ejb layer, however, you don't necessarily need that. in jboss, the client-side stub for invoking remote ejbs in a cluster will actually include the addresses for all the boxes and do some sort of work distribution itself. so, no given ejb server would be receiving all the incoming load. for jms, again, there are various points of work to consider. you have the message broker itself which is scaled/load balanced in whatever fashion it supports (don't know many details on actual message broker impls). but, for the mdbs themselves, each jee server is pretty independent. each jee server in the cluster will start a pool of mdbs and setup a connection to the relevant queue. then, the incoming messages will be distributed to the various servers and mdbs accordingly. again, no single box will be more loaded than any other.
    load balancing/clustering is not part of the jee "spec", but it is one of the many features that a decent jee server will handle for you. the point of jee was to specify patterns for doing work which, if followed, allow the app server to do all the "hard" parts. some of those features are required (transactions, authentication, etc), and some of those features are not (clustering, load-balancing, other robustness features).
    I still would think dedicated load balancers, whether physical hardware or virtual software running in a cloud/VM setup would be a better solution for handling load to different tiers?like i said, that depends on the tier. makes sense in some situations, not others. (for one thing, load-balancers tend to be http based, so they don't work so well for non-http protocols.)

  • Javax.jms.JMSException: Not supported in XA-backed sessionoutside global tx

    I am trying to setup OracleOJMS provider and tries to access queue and post to queue from a normal jsp for testing.
    I am getting the following
    javax.jms.JMSException: Not supported in XA-backed session outside global transaction
         at oracle.j2ee.ra.jms.generic.RAUtils.make(RAUtils.java:525)
         at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:199)
         at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:210)
         at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.prepareForSend(CommonProducerWrapper.java:350)
         at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.send(CommonProducerWrapper.java:159)
         at _ResourceProvider._jspService(_ResourceProvider.java:112)
         at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.1.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:453)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:591)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:515)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:711)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:368)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:866)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:448)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:216)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)
         at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
         at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
         at java.lang.Thread.run(Thread.java:595)I have posted query in this link.
    http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=14&t=001837
    Can you please help me out?

    Sorry for the jammed one
    Neat one.
    am trying to setup OracleOJMS provider and tries to access queue and post to queue from a normal jsp for testing.
    I am getting the following
    javax.jms.JMSException: Not supported in XA-backed session outside global transaction
    at oracle.j2ee.ra.jms.generic.RAUtils.make(RAUtils.java:525)
    at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:199)
    at oracle.j2ee.ra.jms.generic.RAUtils.toJMSException(RAUtils.java:210)
    at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.prepareForS
    INVOCATION
    <form name="TestResourceProvider" method="GET">
    <%
    // Check if the message has to be enqueued
    if (request.getParameter("Message") != null){
    Context jndiContext = new InitialContext();
    XAQueueConnectionFactory queueCF = (XAQueueConnectionFactory)jndiContext.lookup
    ("java:comp/env/jms/InQueueCF");
    Queue queue = (Queue)jndiContext.lookup("java:comp/env/jms/InQueue");
    QueueConnection queueConnection = queueCF.createQueueConnection();
    // Start the Connection
    queueConnection.start();
    QueueSender sender = queueSession.createSender(queue);
    Message msg = queueSession.createTextMessage(request.getParameter("Message"));
    sender.send(msg);
    queueSession.commit();
    sender.close();
    queueSession.close();
    queueConnection.close();
    %>
    <%
    }else{
    // User can enter the message to be enqueued through here
    %>
    Enter the message to be enqueued
    <INPUT type="text" name="Message">
    <br><br>
    <input type="Submit" value="Enqueue Message">
    <%
    %>
    </form>
    </body>
    </html>
    ---------------------

  • JMS and loadbalanced Radius servers

    I have a problem with sending JMS messages to a queue where they get picked up and implemented upon by executing cisco cmds via ssh, i seem to get varied JMS commnds sent to two different VPNs.
    there are two cisco swithes and two jboss appserevers, each having a radius serever to authenticate the remote ip address and then assign some firewall rules to the cisco kits via the JMS service , which are just cisco cmd via ssh or some type of secure telnet - put problem is that instaed of the same rule-set being applied to both the cisco swithes i get varaition in the firewall rules being sent to the swithes - sometime i get half sent to one swith and rest to the other , what should i be looking at to isolate the problem the logs dont show much , i have radius server logs and server logs and firewall logs - but cant see what the problem is where could someone suggest i look to start figuring out what the problem is - is it something to do with the load balancing , the JMS stuff - if so what should i look at or the ssh type telnet session from Java - is there known unreliabilty type issues with regards to transactions when executing cmd line stuff via a secure telnet session from a java object. Or does any one know of any other firewall manager type utility that can be integrated with a radius server and java application inoder to dynamically set up a firewall congiguration of cisco kit

    The service is via a topic as a destination .....
    the basic idea of the functionality is as follows ...i'm hoping some one can clearly spot what the issue would be such as known issues with excuting IOS cmds via ...CiscoController object which knows how to use SSH-2 protocol to send IOS commands.
    the basic idea of functionality is as follows:-
    The network elements themselves are protected against intrusion by using standard Cisco firewall technologies. A PIX 515e redundant pair is employed to protect each of the Access Points and the Control and Monitoring platform.
    The Dynamic Firewall works in conjunction with the RADIUS server to dynamically apply access list entries to the interface of the VPN routers in the Access Point.
    Address Assignment
    The RADIUS Server is responsible for assigning an IP address to a terminal, once it has requested access to the network. Session notifications, which include the assigned ip address and firewall rules, are communicated via a JMS Topic called �xxxxxSessionTopic� The firewall manager listens for these notifications and uses them to dynamically add access list entries to the vpn router. When a session is closed, i.e. when a terminal detaches from the network, another notification is broadcast as such. This is used to remove the access list entries from the router.
    It is important to ensure that the correct access list entries are added and removed when updating the router. Newer versions of Cisco IOS allow serial numbers to be employed when applying access list entries, thus negating the necessity to remove and re-apply all entries to ensure that they retain the same order. The firewall manager there makes use of the value of the id field for the Address object allocated to the terminal as a basis for generating the unique serial number. This is multiplied by 20 and the rule priority number in the FirewallRule object is added to make the serial number unique, as the ip address is a unique entity on the platform. This makes management of the access list entries relatively simple.
    Connectivity
    In order to ensure access to the VPN routers remains secure, SSH-2 is used by the Dynamic Firewall software to connect to the VPN routers and deliver the necessary IOS commands to insert new rules into the access list. The necessary access details are started in the SAR files that package the code and are located in the JBoss hot deploy directory on the application servers.
    Software Objects
    The Dynamic firewall components are packaged in a file named xxxxFirewallManager.sar. This is a JBoss service archive and is started on deployment of the SAR file to the jboss hot deploy directory, or on start up of the JBoss application server. The archive contains the java objects listed below, which are responsible for the implementation of the Dynamic Firewall, along with necessary configuration files.
    FirewallManagerMBean
    This is a JBoss JMX Service object that is registered onto the JBoss JMX bus. Two of these objects will be configured for each Router firewall that is to be managed by the application server. The object has a number of properties that must be initialised through the jboss-service.xml file that is stored in the SAR file. These properties are listed in the following table. See the example jboss-service.xml file in the configuration section.
    FirewallManager
    Each MBean creates a FirewallManager. The FirewallManager is responsible for receiving session creation and deletion notification messages over the JMS Topic �xxxxxSessionTopic�. It then un-marshals a FirewallRuleSet object containing the rules (up to 20) that must be applied to the access list. A FirewallController is then used to deliver these rules to the router
    FirewallController
    This specialises a CiscoController object which knows how to use SSH-2 protocol to send IOS commands.
    Configuration
    Configuration is located in the root directory of the SAR. One jboss-service.xml file must exist and a separate properties file will exist for each of the router access lists that are managed (normally 2 per router)
    the problem is that even with this sound architecure it seems that the firewall rules are not correctly and equally applied to both the routers.
    it may be a transactional issue where the messages have to be set inside a transaction - but can somebody please shed some light on this issue so that i'm not blindly going down different paths. does any one know of any way to easliy set up a dynamic firewall list and apply that to cisco kit? via a java app

  • JMS receiver adapter supports SSL??

    Hi
    We have a interface in our project which uses JMS adapter and to make it secured communication , we are requested to use SSL.
    Can anyone please suggest if JMS receiver adapter supports SSL.
    If no possible, coould you please let us know any other alternative approach to this.
    Regards
    Jagruth

    Look into below discussions
    JMS To MQSeries with SSL.
    Regards
    Aashish Sinha

  • JMSML - XML Based Mark-Up Language for BEA WebLogic JMS and JMX

              JMSML is a Mark-Up language designed and developed to make Java Messaging Service
              (JMS) and Java Management Extensions (JMX) programming easy by hiding all the
              JMS and JMX Java API complexity behind a few, simple, easy to use XML tags.
              Both the White Paper and the binary download are available in dev2dev.beasys.com
              at the link below:
              http://dev2dev.beasys.com/resourcelibrary/whitepapers.jsp?highlight=whitepapers
              Regards
              [email protected]
              

    Hi,
    I finally managed to post a message to ActiveMQ 5.4.2 from WLS 10.3. I created a foreign JMS Server in WLS. I am not sure if you still have this issue, but I was facing this problem and managed to resolve it so posting the reply!
    I placed the activemq-all-5.4.2.jar file in WLS server classpath.
    The settings I used for the Foreign Server are:
    General tab
    JNDI Initial Context Factory: org.apache.activemq.jndi.ActiveMQInitialContextFactory
    JNDI Connection URL: tcp://localhost:61616
    Destinations Tab
    Name: TestQueue
    Local JNDI Name: TestQueue
    Remote JNDI Name: dynamicQueues/TestQueue (I tried with a normal queue, but it didn't work. So used dynamicQueues here. Will try with other queue also)
    Connection Factories Tab
    Name: AMQConnectionFactory (
    Local JNDI Name: AMQConnectionFactory
    Remote JNDI Name: ConnectionFactory (This is default name given by Active MQ, you can change by adding names in jndi.properties file and placing it in config folder of ActiveMQ installation. Please check here: http://activemq.apache.org/jndi-support.html)
    Using this configuration I was able to post message to ActiveMQ queue from Oracle Service Bus. One more issue to be taken care is that if the message type is not "Text" then the message body was coming as blank in ActiveMQ. So set the message type as "Text" explicitly.

  • Hi looking for a bit of free  anti - virus and firewall for osx 10.8.2

    hi looking for a bit of free  anti - virus and firewall for osx 10.8.2 any pointers also any one used Mac cleaner ?

    1. This comment applies to malicious software ("malware") that's installed unwittingly by the victim of a network attack. It does not apply to software, such as keystroke loggers, that may be installed deliberately by an intruder who has hands-on access to the victim's computer. That threat is in a different category, and there's no easy way to defend against it. If you have reason to suspect that you're the target of such an attack, you need expert help.
    2. All versions of OS X since 10.6.7 have been able to detect known Mac malware in downloaded files. This feature is transparent to the user, but internally Apple calls it "XProtect." The recognition database is automatically updated once a day; however, you shouldn't rely on it, because the attackers are always at least a day ahead of the defenders.
    The following caveats apply to XProtect:
    It can be bypassed by some third-party networking software, such as BitTorrent clients and Java applets (see below.)
    It only applies to software downloaded from the network. Software installed from a CD or other media is not checked.
    3. Starting with OS X 10.7.5, there has been another layer of built-in malware protection, designated "Gatekeeper" by Apple. By default, applications and Installer packages downloaded from the network will only run if they're digitally signed by a developer with a certificate issued by Apple. Software certified in this way hasn't actually been tested by Apple (unless it comes from the Mac App Store), but you can be reasonably sure that it hasn't been modified by anyone other than the developer. His identity is known to Apple, so he could be held legally responsible if he distributed malware. For most practical purposes, applications recognized by Gatekeeper as signed can be considered safe.
    Gatekeeper has, however, the same limitations as XProtect, and in addition the following:
    It can easily be disabled or overridden by the user.
    A malware attacker could get control of a code-signing certificate under false pretenses, or could find some other way to evade Apple's controls.
    For more information about Gatekeeper, see this Apple Support article.
    4. Beyond XProtect and Gatekeeper, there’s no benefit, in most cases, from any other automated protection against malware. The first and best line of defense is always your own intelligence. All known malware circulating on the Internet that affects a fully-updated installation of OS X 10.6 or later takes the form of so-called "trojan horses," which can only have an effect if the victim is duped into running them. The threat therefore reduces to a battle of wits between you and the malware attacker. If you're smarter than he thinks you are, you'll win.
    That means, in practice, that you never use software that comes from an untrustworthy source. How do you know whether a source is trustworthy?
    Any website that prompts you to install a “codec,” “plug-in,” or “certificate” that comes from that same site, or an unknown one, is untrustworthy.
    A web operator who tells you that you have a “virus,” or that anything else is wrong with your computer, or that you have won a prize in a contest you never entered, is trying to commit a crime with you as the victim. (Some reputable websites did legitimately warn users who were infected with the "DNSChanger" malware. That exception to this rule no longer applies.)
    “Cracked” copies of commercial software downloaded from a bittorrent are likely to be infected.
    Software with a corporate brand, such as Adobe Flash Player, must be downloaded directly from the developer’s website. No intermediary is acceptable.
    5. Java on the network (not to be confused with JavaScript, to which it's not related) is a weak point in the security of any operating system. If a Java web plugin is not installed, don't install one unless you really need it. If it is installed, you should disable it (not JavaScript) in your web browsers. Few websites have Java content nowadays, so you won’t be missing much. This setting is mandatory in OS X 10.5.8 or earlier, because Java in those obsolete versions has known security flaws that make it unsafe to use on the Internet. The flaws will never be fixed. Regardless of version, experience has shown that Java can never be fully trusted, even if no vulnerabilities are publicly known at the moment.
    Follow these guidelines, and you’ll be as safe from malware as you can reasonably be.
    6. Never install any commercial "anti-virus" or "Internet security" products for the Mac, as they all do more harm than good. If you need to be able to detect Windows malware in your files, use the free software ClamXav — nothing else.
    Why shouldn't you use commercial "anti-virus" products?
    Their design is predicated on the nonexistent threat that malware may be injected at any time, anywhere in the file system. Malware is downloaded from the network; it doesn't materialize from nowhere.
    In order to meet that nonexistent threat, the software modifies or duplicates low-level functions of the operating system, which is a waste of resources and a common cause of instability, bugs, and poor performance.
    By modifying the operating system, the software itself may create weaknesses that could be exploited by malware attackers.
    7. ClamXav doesn't have these drawbacks. That doesn't mean it's entirely safe. It may report email messages that have "phishing" links in the body, or Windows malware in attachments, as infected files, and offer to delete or move them. Doing so can corrupt the Mail database. The messages should be deleted from within the Mail application.
    ClamXav is not needed, and should not be relied upon, for protection against OS X malware. It's useful only for detecting Windows malware. If you don't need to do that, avoid it. Windows malware can't harm you directly (unless, of course, you use Windows.) Just don't pass it on to anyone else.
    8. The greatest danger posed by anti-virus software, in my opinion, is its effect on human behavior. When people install such software, which does little or nothing to protect them from emerging threats, they get a false sense of security from it, and then they may do things that make them more vulnerable. Nothing can lessen the need for safe computing practices.
    9. It seems to be a common belief that the built-in Application Firewall acts as a barrier to infection, or prevents malware from functioning. It does neither. It blocks inbound connections to certain network services you're running, such as file sharing. It's disabled by default and you should leave it that way if you're behind a router on a private home or office network. Activate it only when you're on an untrusted network, for instance a public Wi-Fi hotspot, where you don't want to provide services. Disable any services you don't use.

  • Foreign JMS and Enlisting Transactions?

    I'm working on implementing an XA interface layer to an implementation of a foreign JMS provider and am having a problem with enlisting XA transactions in WebLogic.
              I implemented a simple JNDI that stores and retrieves serialized versions of classes in the local filesystem.
              I create an XATopicConnectionFactory named ambxatcf and a Topic named ChatterTopic and store them in there.
              The XATopicConnection implements XAConnection.
              I put a client jar in bea/weblogic91/samples/domains/wl_server/lib/ which contains the JNDI code and all of my XA classes which call the JMS.
              That gets picked up by the server on startup.
              In the Web Logic Admin Console:
              I create a Foreign Server under JMS Modules, ambrosiaServer.
              I set the JNDI Initial Context Factory set to my JNDI InitialContext class and the JNDI Properties is the path to my JNDI filestore so that it can find the serialized objects.
              I create a Foreign Destination in this server which has a Local JNDI Name: Chatter and Remote JNDI Name: ChatterTopic
              And then also in this server, I create a Foreign Connection Factory, Local JNDI Name: ambxatcf and Remote JNDI Name: XATopicConnectionFactory.
              Then in Deployments, I Install the jar containing my bean and Start it.
              Then I run the client and the bean prints out the XATopicConnectionFactory and it's the one that came out my JNDI.
              I have messages in my XATopicConnectionFactory, XATopicConnection and XATopicSession code so I know they're getting called.
              What's not getting called is XATopicSession.getXAResource() or my XAResourceImpl.start() or XAResourceImpl.commit().
              This happens whether I have the bean set up for bean managed or container managed transactions.
              I'm testing against WebLogic 9.1.
              Thanks,
              Don Hermes

    Hi Tom,
              Thank you for your response.
              I saw the article in the 8.1 documentation but I also found the following in the 9.1 docs.
              So, I assumed it would work.
              Was that assumption wrong?
              Thanks,
              Don
              =====================
              http://e-docs.bea.com/wls/docs91/jms/j2ee.html
              Automatically Enlisting Transactions
              This feature works for either WebLogic JMS implementations or for third-party JMS providers that support two-phase commit transactions (XA protocol). If a wrapped JMS connection sends or receives a message inside a transaction context, the JMS session being used to send or receive the message is automatically enlisted in the transaction through the XA capabilities of the JMS provider. This is the case whether the transaction was started implicitly because the JMS code was invoked inside an EJB with container-managed transactions enabled, or whether the transaction was started manually using the UserTransaction interface in a servlet or an EJB that supports bean-managed transactions.

  • I try to restore ipad to ios 7.0.4 but the tunes show error ,the ipad could not be restore because the firmware file was corrupt, i have the latest update from itunes and windows and i turn off antivirus and firewall and the error is the same , what i do?

    i try to restore ipad to ios 7.0.4 but the tunes show error ,the ipad could not be restore because the firmware file was corrupt, i have the latest update from itunes and windows and i turn off antivirus and firewall and the error is the same , what i do?, my ipad is show apple logo
    please what i do

    Hello JD_NINJA,
    Thanks for using Apple Support Communities.
    Error 9006 when restoring your iOS device indicates that there is security software on your computer which is preventing connection to the Apple server or your device.  To troubleshoot this issue please follow the directions below.
    Check your security software
    Related errors: 2, 4, 6, 9, 1611, 9006. Sometimes security software can stop your device from communicating with either the Apple update server or with your device.
    Check your security software and settings to make sure that they aren't blocking a connection to the Apple servers.
    Get help with iOS update and restore errors - Apple Support
    When restoring your iPhone, please make sure to follow the directions in the link below to properly restore.
    Restore your device from an iCloud or iTunes backup - Apple Support
    Take care,
    Alex H.

  • Is it a complex task to translate between JMS and MQ?

    Hello!
    I wonder if it is a complex task to translate a JMS message (javax.jms.Message) to a MQ message (com.xxx.MQMessage)?
    xxx=I do not remember the package name for MQMessage
    Right now I participate in a project where we need to do this translation.
    (I must admit that I thougt there was no need for a translation. I thought that JMS was transparent to MQ and vice versa. But I guess I was wrong)
    I would love to hear some experiance and perhaps if there is some "best practice", please let me know!
    Best regards
    Fredrik

    antsbull wrote:
    I'm happy for you that you use WebLogic - however WebSphere MQ is the leading messaging technology in the industry. If it is configured correctly it guarantees 100% message retention. You may beg to differ, but you have nothing to back it up with so far - maybe IBM should be sued for false advertising if it is impossible (as you say)?Not really. IBM isn't a very important software company, IMO. They're huge in global services, but they passed leadership in hardware and software off to others decades ago. Or maybe you're one of those people who still lives in the 80s and thinks of IBM as a "leader".
    There's a lot of IBM legacy out there. Banks are still running DB2, but nobody thinks it's a leader in the relational database space. There's a lot of Cobol code with CICS running on mainframes, but surely you're not going to cite that as cutting edge, are you?
    Just curious - do you work for IBM?
    All I know is that MQ is the industry standard, as you can easily discover on google or wikipedia or whatever you want. Wikipedia? Is that your best source? LOL!
    Let's look at Wikipedia, shall we? Your own source tells me that WebSphere is ~40% of the market:
    http://en.wikipedia.org/wiki/MQSeries
    I'm even suspicious of these numbers, because I think they leave out the open source parts of the market. How do you quantify that? # downloads? # of systems in production? I'll bet that survey doesn't exist. And it looks different depending on whether we're talking about large or small companies.
    Why don't you find some links to support your claim? You've done nothing but say "industry leading" and "guarantees 100%". Your "because I said so" isn't convincing, either.
    Come back in a month - I have time.
    Maybe if you are such a messaging expert you would have some reasons why the majority of the industry use MQ and not WebLogic even though WebLogic is supposedly better? Because the entire world isn't IBM anymore.
    I worked on a Ministry of Justice project that used WebLogic application server and its JMS queues for a critical messaging component - and at least once every two weeks the queues would go down and there would be a mad rush to get them back up - this was probably a poorly configured installation of WebLogic, and is only one example, but it left me with a pretty poor opinion of the product.That's fair. I don't know anything about the version or the admins or the servers or even you. But if that's what your experience has been, I can't question it. Maybe I can question the competence of a Ministry of Justice (which country?) that doesn't seem to train their WebLogic and server admins properly. Maybe it's an organizational problem.
    I can say that we have farms of WebLogic running on Solaris servers that are very reliable. I developed one app that faces out to the Internet that uses JMS, and that app hasn't had to come down in almost three years. Reliable enough?
    WebSphere and WebLogic have been neck and neck in the Java EE app server space for a long time, each controlling 35-40% of the market. I think JBOSS and Glassfish are making some inroads there. Spring is making it possible to write enterprise apps that can be deployed on servlet/JSP engines.
    And all of this discussion leaves out Microsoft, .NET, and MSMQ.
    I would believe that MQ series has the lion's share of the middleware/messaging market, but I'd bet that it has less to do with the clear superiority of the product and more to do with the large legacy base that IBM has out there. It's a very old mainframe/COBOL/CICS kind of technology, and the organizations that brought it in tend to be large and conservative.
    You didn't ask any questions about the OP's organization. I think that ought to factor into the discussion.
    Oh, and by the way more than 80% of the companies on the Fortune 100 use WebSphere MQ - maybe you should inform them how rubbish it is?And 76.273% of all statistics are made up on the spot.
    I'm not interested in convincing anybody of anything. It's my opinion that if I had a Java EE app server with JMS on it that I wouldn't bring in IBM's MQ Series just for the sake of having it. If there was a legacy system that I needed to integrate with that demanded I use MQ Series there'd be no question.
    But why does it seem sensible to bring in yet another moving part, another expense, another separate piece to be configured and maintained and upgraded? Applications are hard enough to develop. I wouldn't use MQ Series for its own sake, and I'd challenge anybody who brought it in because "they said so".
    %

  • Any kind of integration experience with Weblogic JMS and Oracle AQ?

    Hi,
    In my company I work with java developers who believe in some kind of "holly" database independence I don't understand and as a result my life as a database developer is hell on earth.. Yesterday we again started to discuss, this time where to log, they believe database is slow and prefer logging to filesystem, after some hours finally I could convince them for some operational and reporting needs to use the database and will do this in an asyncronous way whiich they won't get slow. After all I believe the reason for a database is data, this is the place where data lives, and with the correct desing and implementation logging to database would perform better.
    I love Oracle features, and know that we paid a lot for this software, so today I started investigating this promised solution. And quickly I found AQ and JMS topics in the documentation :)
    After this introduction here is my problem; my company use BEA Weblogic as application server and the java guys want AQ to automatically (but of course with some delay) take their JMS log requests into database tables. Does any one have similar application experience, or any kind of integration experience with Weblogic JMS and Oracle AQ?
    Any comments, references, documentation, sample code, url will be most welcomed :)
    Thank you very much!
    Tonguc
    [email protected]
    References I found upto now;
    Oracle® Streams Advanced Queuing Java API Reference 10g Release 2 (10.2) http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14291/toc.htm
    (Packages; javax.jms & oracle.jms)
    Oracle® Streams Advanced Queuing User's Guide and Reference 10g Release 2 (10.2) http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14257/toc.htm
    Part IV
    Using Oracle JMS and Oracle Streams AQPart V describes how to use Oracle JMS and Oracle Streams Advanced Queuing (AQ).
    Chapter 11, "Introducing Oracle JMS"
    Chapter 12, "Oracle JMS Basic Operations"
    Chapter 13, "Oracle JMS Point-to-Point"
    Chapter 14, "Oracle JMS Publish/Subscribe"
    Chapter 15, "Oracle JMS Shared Interfaces"
    Chapter 16, "Oracle JMS Types Examples"
    A Sample Code from Otn
    http://www.oracle.com/technology/sample_code/tech/java/web_services/jmsws/NewsQueueEJB.java.html

    I wouldn't go as far to say Oracle AQ is out-dated today. However, it is indeed a proprietary technology that did not found much main-stream adoption in the earlier years after its introduction. The advent of JMS made it somewhat more useful (or should I say intriguing, because more people are trying to tie it together with other J2EE technologies), but the Oracle's JMS wrapper classes in aqapi.jar were not feature complete for a long while, so using it outside Oracle's application server was painful, if not impossible. I do agree that the info at the dev2dev's JMS newsgroup or in this forum is highly fragmented, as neither Oracle nor BEA provides an official solution to integrate AQ with WebLogic, so people like us have to learn the technology through experimentation and in a piecemeal fashion.
    3 years ago I was literally "playing around" - we had a polling mechanism set up to use triggers to write Oracle data changes into an event table, and had a Java-based daemon to scan that table and publish events as JMS messages to the WebLogic JMS server. This continues to work reliably till today, but I was looking for a solution that has few parts - I wanted to hook up my WebLogic MDB directly to AQ as a foreign JMS provider. Although I was able to get it to work (including XA), there were a few hoops I had to jump through, such as decompiling the Oracle AQjms classes to make them bind to the WebLogic JNDI tree.
    One year after that Diptanshu Parui took what I did a giant step further - he extended the Oracle AQjms classes to allow them to be bound to the WebLogic JNDI tree naturally, and he figured out how to use WebLogic JMS messging bridge to re-send single-threaded AQ JMS messages to clustered JMS queues, which allow concurrent message assumption by multiple instances of MDB's. My impression is that he is using that setup in a production environment.
    I am sure you are aware of it but I would like to make it clear - in order to use AQ as a foreign JMS provider to WebLogic-hosted MDB's, you don't need to update your database to Oracle 10g - Oracle 8i is good enough (although I recommend at least 9i Release 2). It is not the database engine, but rather the aqapi.jar JMS wrapper on top of AQ that matters. I do recommend that you use aqapi.jar from Oracle Application Server 10.0.3 or up for better XA support, among other things. Again, you don't have to replace WebLogic with Oracle AS - you only need a single jar file from it and put it in your WebLogic's classpath. However, I don't know what this means from a licensing point of view if you ever go to production - do you have to pay the full price of OracleAS or OC4J just to use the aqapi.jar?
    In the coming days I will test the latest aqapi.jar to see how much progress Oracle has made in terms of making their J2EE products more spec-compliant :-).
    Hope the above gives you a different perspective.
    Eric

Maybe you are looking for

  • Creative mp3 player compatibility with PFS car au

    I was wondering if the "Plays For Sure" compatible Creative Players will work with the PFS compatible car audio receivers from Kenwood and Alpine. I'm mostly wondering about my Zen Xtra, but I'm sure others would like to know if their players would w

  • Is there a call history command in Soloaris 10?

    Is there a command to run before commands? such as $ls $gcc test.c $ /*here,I want to press up arrow or left arrow key to show history command,such as gcc test.c or ls,I remember FreeBSD can do it,how to do it under Soloaris?*/ Thanks

  • Mail:  REPLY always goes to an old address...

    Okay Gurus... A friend of mine, John,  just changed his email address.  His old address was (let's say) a hotmail.com address.  His new address is a gmail.com address. Now, whenever I recieve and email from [email protected], and I hit "reply," the r

  • How to delete append structure in a table?

    Hi guys, How can I delete the structure appended to a table? Thanks in advance!

  • Music comments in iPhone

    Hi! I've added comments to some of my music tracks in iTunes. Can I look them in iPhone running iOS 6.1.3? -Matti