JMS growing as a technology?

What is the current state of JMS? On Sun's website, there hasn't been a "what's new" in 13 months:
http://java.sun.com/products/jms/
And, at the upcoming JavaOne, I don't see a single session (or even a Birds-of-a-Feather) on JMS. We currently have a CORBA based system, but were looking at options that were asychronous. But, I'm having a hard time advocating that JMS is THE solution we've been looking for, given the lack of apparent Sun support for the standard.
Can anyone comment?

Hi vrmerlin,
JMS is simply a collection of interfaces and classes that define common operations (publishing, consuming etc.) performed with topics and queues and their respective factories. The very fact that JMS has remained static is because it has achieved what it set out to.
JMS will never be a �solution�. JMS is better described as a fairly sensible approach to abstraction that a large number of vendors including ourselves support. To find your solution you need to look at the bits that are not defined within the JMS specification (clustering, resilience, management, administration and security) and find a vendor that ticks all your boxes.
Regards,
Paul Brant
My-Channels � technologies working together
http://www.my-channels.com/

Similar Messages

  • Is JMS the right java technology for text message management

    I hope to get some feedback on the following:
    We get text weather forecast messages sent to our server (or we grab them), after we get these messages we parse them to xml, then archive and redistribute them to other servers using (wget). All this
    is done using perl scripts.
    I'd like to choose a java-based technology that ttracks message flow (e.g., messages arrive, messages late, etc), then
    parse to xml and redistribute these text messages.
    Can any users tell me if JMS might be appropriate for this task?
    Thank you beforehand.
    C

    From your brief description it looks to me like JMS is a technology for you.

  • New WLS JDBC Technology page on dev2dev

    There is a new WLS JDBC technology page on dev2dev at
    http://dev2dev.bea.com/technologies/jdbc/index.jsp.
    We also expect to be posting new papers to it shortly.

    Hi Eric,
              The FAQs are already linked under "Newsgroups and FAQ".
              Tom
              Eric Ma wrote:
              > Tom:
              >
              > Thanks for pulling all the resources together in one place. Can you also add
              > links to JMS FAQ's?
              >
              > Eric
              >
              > Tom Barnes <[email protected]> wrote:
              >
              >>For the first time, it's all in one place!
              >>
              >>There is a new comprehensive JMS technology page on dev2dev for all
              >>public things JMS. It covers WebLogic versions 6.1 and later:
              >>
              >> http://dev2dev.bea.com/technologies/jms/index.jsp
              >>
              >>The technology page is also accessible from the left-hand nav underneath
              >>the Technologies header.
              >>
              >>In addition, there is a new JMS features section in edocs, which, also
              >>for the first time, centrally lists JMS features and their related
              >>links:
              >>
              >> http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              >>
              >>Any feedback is welcome, and can go to dev2dev, or myself
              >>([email protected]).
              >>
              >>Tom, BEA
              >>
              >
              >
              

  • Why would I need to use LiveCycle Data Services in a Flex app?

    I cannot figure out what additional functionality is provided by using LiveCycle Data Services in my Flex apps.  I cannot get a clear understanding of how using LiveCycle Data Services would benefit my applications.  Does someone out there use LiveCycle Data Services?  If so, what do you do with it in Flex?
    Thanks!

    - data push for publish/subscribe implementations
    User has to do nothing to get updated information. You push it to their machine when new data is available, like Yahoo finance updated quotes.
    - data paging
    You don't want to display one million rows in your datagrid at once. Get a batch of data, if the user scrolls down, get the next batch, etc.
    - server side clustering
    One server does not get overloaded. High traffic sites have their large number of concurrent connections managed more efficiently.
    - JMS services
    JMS is a powerful technology for messaging throughout an application, and LCDS makes it much easier.
    - RTMP tunneling
    Allows the use of the RTMP protocol in LiveCycle Data Services applications. Makes it easier to traverse firewalls and proxies appropriately that currently prevent direct RTMP client connections to the server.
    If this post answered your question or helped, please mark it as such.

  • Battery replacement error

    Hi Tech Support,
    It has hardly been 2- 3 years and I am already getting the below message to replace the battery.
    If I let the notebook run on the battery it suddenly shut down all of a sudden in a few mins.
    I am quite dissapointed with this product now.
    First, the computer freezes when I put the CAT 5 cable for LAN internet and now this.
    Specs of the Notebook: HP Pavilion DV6, I7 Windows 7
    Regards,
    Jams
    This question was solved.
    View Solution.

    Hello jamessy007
    I am sorry to hear you are having issues with the battery on your HP Pavilion DV6. I would like to offer my assistance in getting things working correctly for you again. I would like to draw your attention to the HP Support document: Testing and Calibrating the Battery (Windows 7). Now this document has been designed to help you recalibrate your battery if it needs it, and/or test it to ensure it is still functioning correctly. Unfortunately, in the day and age where computers hardware and software technology have been growing exponentially battery technology has not been able to keep up.  This leaves us at times yearning for more when our power requirements are so demanding.
    I would suggest you review and follow the document through and see what the outcome is. We may be able to resolve your issue to your satisfaction. If however it turns out the battery needs to be replaced I am going to provide you with a link to HP Battery Finder and you can if you so desire order the battery from the HP Parts Store.
    If after you are still experiencing freezing when you plug in your ethernet cord please re-post and I will be glad to assist.
    I hope this helps you find resolution to your error. Thank you for posting on the HP Forums. Have a great day!   
    Please click the "Thumbs Up" on the bottom right of this post to say thank you if you appreciate the support I provide!
    Also be sure to mark my post as “Accept as Solution" if you feel my post solved your issue, it will help others who face the same challenge find the same solution.
    Dunidar
    I work on behalf of HP
    Find out a bit more about me by checking out my profile!
    "Customers don’t expect you to be perfect. They do expect you to fix things when they go wrong." ~ Donald Porter

  • Consumer number for a JMS queue continues to grow

              I am using WLS 7.0 SP2. I have a JMS Queue and number of consumers continues to
              grow.
              Is there any way to stop it from growing? If not, should I be concerned about
              the memory usage by those consumers?
              Thanks.
              Rick
              

              Tom,
              You are right on JMS resources. We found that developer didn't close JMS session
              and conneciton which caused the memory leak. Now it has being running more than
              10 hours without crashing.
              Thanks.
              Rick
              Tom Barnes <[email protected]> wrote:
              >
              >Rick Chang wrote:
              >> I am using WLS 7.0 SP2. I have a JMS Queue and number of consumers
              >continues to
              >> grow.
              >>
              >> Is there any way to stop it from growing?
              >
              >No.
              >
              >> If not, should I be concerned about
              >> the memory usage by those consumers?
              >
              >Before jumping to conclusions though, make sure
              >that you are looking at the right statistic, there
              >are three for consumer count:
              > current -- active consumer count
              > high -- highest active consumer count
              > total -- total consumers ever created
              > (ever increasing by definition)
              >
              >If you are looking at "current"
              >the statistics point to a likely memory/resource leak.
              >Perhaps some part of your application is failing to close
              >its JMS resources when it is finished with them.
              >
              >>
              >> Thanks.
              >>
              >> Rick
              >
              

  • JMS Messages keep on growing for a Topic with non-durable consumers

    I have a JMS Server whose "Messages Current" keeps on growing after every message send to the topic. All the consumers are non-durable. The session is a non-transacted session with Auto Accknowledge parameter. My client does recieve the message, but it does not go down from the "Messages Current" in the WLS console. Also once the server is restarted, the messages go down to 0.
    I am using 9.2 SP2 on a Solaris environment.
    Any insight would be helpful

    It's possible that one or more the subscribers is stalled for some reason and so is not actually receiving and processing messages. This would cause messages to accumulate. You can examine statistics for individual consumers on the console to see if this is an issue.
    Also, there could be a durable subscription on the topic left over from some previous application you used with the topic. There are statistics for these as well.
    Yet another possibility is that the clients are receiving the messages but are failing to acknowledge/commit them. You wrote that the sessions are "auto-acknowledge" but they could accidentally be "transacted". Check to make sure that the first parameter passed to "createSession" is true (it should be false), and that the second parameter is set to auto-acknowledge.
    Finally, if you happen to be using a distributed topic, keep in mind that if one of the topic members is unavailable/crashed/down messages will accumulate on the other distributed topic members until the unavailable member is restarted (at which point they will be forwarded to the restarted member).
    Tom

  • 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.)

  • ODI - JMS Technology

    Does anyone know how ODI is transforming Java object to a flat/relational format and what performance impact it might have?
    http://download.oracle.com/docs/cd/E17904_01/integrate.1111/e12644/jms.htm
    Our objects have a fair degree of nesting and I wonder how ODI and the KM's will overcome this?

    There is definitely a message selector defined in the message. I am using Message Selector and ClientID (Subscriber ID) in LKM. It turns out that the subscriber needs to be configured with same message selector expression. Otherwise when ODI hit the subscriber, it behaves as if it is setting the message selector on the subscriber in Weblogic, and the setting operation will reset all messages.
    Not sure if this is documented anywhere ( ODI or Weblogic ).
    Thanks
    Albert

  • Do I need to use JMS technology in my project?

    Hello, I am doing one project, which is a forum. login user can write message and send to another user(user B), when user B login, the forum will inform him he has a message from user A.
    to implement this, Is it compulsory to use JMS? or not necessary?

    You usually do this kind of stuff via a database, not with JMS.
    -- Andreas

  • Release jms connection doesn?t release.

              Hi All,
              Environment: WLS 7.0sp2, JMS: weblogic JMS JMSJDBCStore, database oracle9
              We invoke the following sendEvent code from a worker thread invoked by a scheduler
              that was started in a servlet init method (this worker thread code is wrapped
              with a user tx).
              The topic’s MDB is getting the message OK, however the number of connection in
              the monitor (mydomain> JMS Servers> NomJMSServer> Active JMS Servers) keep growing.
              As you can see we are releasing the connection in a finally block. Can anybody
              explain it.?
              Second question: Should we cache the jms session? If the answer is yes, can they
              expire (close), how do we check if they are still valid?
              Thanks
              public String sendEvent(SyncOutput event)
              String retval = null;
              try
              init();
              topicPublisher.publish( formatMessage(event) );
              catch (Exception e)
              logger().debug("cannot send event", e);
              }finally{
              release();
              return retval;
              private Message formatMessage(SyncOutput output)
              throws JMSException, IOException
              BytesMessage message = topicSession.createBytesMessage();
              GZIPOutputStream gzip = new GZIPOutputStream(new BytesMessageOutputStream(message));
              output.flush(new OutputStreamWriter(gzip));
              gzip.close();
              return message;
              private void init()
              throws Exception
              InitialContext context = new InitialContext();
              TopicConnectionFactory conFactory =
              (TopicConnectionFactory) context.lookup(JMSConfig.get(JMSConfig.FACTORY));
              topicConnection = conFactory.createTopicConnection();
              topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
              Topic topic = (Topic) context.lookup( this.jndiName );
              topicPublisher = topicSession.createPublisher(topic);
              topicPublisher.setDeliveryMode(     DeliveryMode.PERSISTENT );
              private void release()
              try{
              if (topicPublisher != null){
              topicPublisher.close();
              topicPublisher = null;
              if (topicSession != null){
              topicSession.close();
              topicSession = null;
              if (topicConnection != null) {
              topicConnection.close();
              topicConnection = null;
              System.gc();
              }catch(Exception ignore){
              ignore.printStackTrace();
              

              We found the problem, it was a bug in our code. Thanks for your help.
              Tom Barnes <[email protected]> wrote:
              >Its possible the monitor has a bug, but in your case, since
              >you now only create one connection how could the
              >connection count keep growing?
              >
              >Perhaps the MDB app or MDB container is failing in some
              >unexpected way and not
              >closing its connection before attempting to create a new one?
              >Check your log for warnings and error messages, and
              >consider encapsulating your onMessage() code with a
              >try { /* all onMessage code */ }
              >catch (Throwable t) { t.printStackTrace(); rethrow}
              >
              >Meir wrote:
              >> Is it possible that the monitor has a bug? I changed my code to cache
              >the topic
              >> session and topic publisher, so I always use the same one (they are
              >static members
              >> of the class) but this didn't change the result that I'm seeing in
              >the monitor
              >> - the number of connections still keep growing.
              >> Could it be TX related weirdness (note we set the factory "User Transactions
              >Enabled"
              >> attribute to true)?
              >>
              >>
              >> "Meir" <[email protected]> wrote:
              >>
              >>>Thanks for your quick response.
              >>>I cahnged the code to catch throwable (both the open and close connection
              >>>are
              >>>in the try/catch block) and I don't see any problems.
              >>>Do you have any other suggestions? Do you need more data?
              >>>
              >>>
              >>>Tom Barnes <[email protected]> wrote:
              >>>
              >>>>
              >>>>Meir wrote:
              >>>>
              >>>>
              >>>>>Hi All,
              >>>>>
              >>>>>Environment: WLS 7.0sp2, JMS: weblogic JMS JMSJDBCStore, database
              >>>>
              >>>>oracle9
              >>>>
              >>>>>We invoke the following sendEvent code from a worker thread invoked
              >>>>
              >>>>by a scheduler
              >>>>
              >>>>>that was started in a servlet init method (this worker thread code
              >>>>
              >>>>is wrapped
              >>>>
              >>>>>with a user tx).
              >>>>>The topic’s MDB is getting the message OK, however the number of
              >connection
              >>>>
              >>>>in
              >>>>
              >>>>>the monitor (mydomain> JMS Servers> NomJMSServer> Active JMS Servers)
              >>>>
              >>>>keep growing.
              >>>>
              >>>>>As you can see we are releasing the connection in a finally block.
              >>>>
              >>>>Can anybody
              >>>>
              >>>>>explain it.?
              >>>>
              >>>>Perhaps you are throwing a RuntimeException or Error without
              >>>>catching it. Put trace statements before the connection
              >>>>create and right before and after the "connection.close()" to
              >>>>verify.
              >>>>
              >>>>Note that since you are closing the connection, there is no need
              >>>>to close the publisher or session.
              >>>>
              >>>>
              >>>>>Second question: Should we cache the jms session?
              >>>>
              >>>>For performance reasons, yes. But if your performance
              >>>>is fine, you don't need to. Since you are doing
              >>>>a "zip" per message, which is expensive in terms of CPU,
              >>>>the overhead of creating a session per
              >>>>message may be negligable in comparison.
              >>>>
              >>>>
              >>>>>If the answer is yes, can they
              >>>>>expire (close),
              >>>>
              >>>>If the host JMS server is adminstratively shutdown
              >>>>or the host JVM for the JMS server crashes...
              >>>>
              >>>>
              >>>>>how do we check if they are still valid?
              >>>>
              >>>>If it fails when you use it, it ain't valid. ;-)
              >>>>
              >>>>You can detect failures pro-actively by registering
              >>>>a connection onException listerner
              >>>>and a session onException listener.
              >>>>
              >>>>Note that WL 8.1 has built in connection/session
              >>>>pooling, and the JMS Performance Guide white-paper's
              >>>>appendix has sample code for writing your own pool for
              >>>>previous WL versions. There is a linke to
              >>>>the white-paper here:
              >>>>
              >>>>http://dev2dev.bea.com/technologies/jms/index.jsp
              >>>>
              >>>>
              >>>>>Thanks
              >>>>>
              >>>>>
              >>>>> public String sendEvent(SyncOutput event)
              >>>>> {
              >>>>> String retval = null;
              >>>>> try
              >>>>> {
              >>>>> init();
              >>>>> topicPublisher.publish( formatMessage(event) );
              >>>>> }
              >>>>> catch (Exception e)
              >>>>> {
              >>>>> logger().debug("cannot send event", e);
              >>>>> }finally{
              >>>>> release();
              >>>>> }
              >>>>> return retval;
              >>>>> }
              >>>>>
              >>>>> private Message formatMessage(SyncOutput output)
              >>>>> throws JMSException, IOException
              >>>>> {
              >>>>> BytesMessage message = topicSession.createBytesMessage();
              >>>>> GZIPOutputStream gzip = new GZIPOutputStream(new BytesMessageOutputStream(message));
              >>>>> output.flush(new OutputStreamWriter(gzip));
              >>>>> gzip.close();
              >>>>> return message;
              >>>>> }
              >>>>>
              >>>>> private void init()
              >>>>> throws Exception
              >>>>> {
              >>>>> InitialContext context = new InitialContext();
              >>>>> TopicConnectionFactory conFactory =
              >>>>> (TopicConnectionFactory) context.lookup(JMSConfig.get(JMSConfig.FACTORY));
              >>>>> topicConnection = conFactory.createTopicConnection();
              >>>>> topicSession = topicConnection.createTopicSession(false,
              >Session.AUTO_ACKNOWLEDGE);
              >>>>>
              >>>>> Topic topic = (Topic) context.lookup( this.jndiName );
              >>>>> topicPublisher = topicSession.createPublisher(topic);
              >>>>> topicPublisher.setDeliveryMode(     DeliveryMode.PERSISTENT );
              >>>>> }
              >>>>>
              >>>>> private void release()
              >>>>> {
              >>>>> try{
              >>>>> if (topicPublisher != null){
              >>>>> topicPublisher.close();
              >>>>> topicPublisher = null;
              >>>>> }
              >>>>>
              >>>>> if (topicSession != null){
              >>>>> topicSession.close();
              >>>>> topicSession = null;
              >>>>> }
              >>>>>
              >>>>> if (topicConnection != null) {
              >>>>> topicConnection.close();
              >>>>> topicConnection = null;
              >>>>> }
              >>>>>
              >>>>> System.gc();
              >>>>> }catch(Exception ignore){
              >>>>> ignore.printStackTrace();
              >>>>> }
              >>>>> }
              >>>>>
              >>>>
              >>
              >
              

  • Problem: sending JMS message in other oc4j

    I have two app server instances " OC4J (1) " and " OC4J (2) ". (snandalone 10.1.3.0.0 - Developer Preview 3 (build 041119.0001.2385)). The containers work on Windows2000 in different machines connected by the LAN.
    OC4J (1):
    I have J2ee of the application [app(1)] (ex. Servlet (1) or MDB (1)) in OC4J (1).
    OC4J (2):
    I have J2ee of the application [app(2)] deploy in OC4J (2) [included Servlet (2) or MDB (2)] . The Servlet (2), or MDB (2) - empty stub, for example code Servlet2:
    package mypackage;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = " text/html; charset=windows-1251 ";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    out.println (" < p > The servlet has received a GET. This is the reply. </p > ");
    out.println (" < /body > < /html > ");
    out.close ();
    I have configuration JMS (2) Queue in jms.xml on OC4J (2):
    < jms-server...... port = "9127"
    < queue name = " Demo Queue " location = "jms/demoQueue" > <description> A dummy queue </description> </queue>
    < queue-connection-factory name = "jms/QueueConnectionFactory" location = "jms/QueueConnectionFactory" / >
    </jms-server>
    It JMS (2) Queue already is present in an OC4J 10.1.3 version.
    My task:
    The J2ee application (1) (ex. Servlet (1)) on OC4J (1) it is necessary to receive connection with JMS (2) (on remote OC4J (2)).
    Variant 1: a code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2)/app(2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup ("jms/QueueConnectionFactory");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup ("jms/demoQueue");
    ic.close ();
    while (true)
    // - send in JMS (2)
    Problem:
    The Servlet (1) [in oc4j (1)] established JMS connection with oc4j (2) and begins to pass the messages [in JMS Queue (2)].
    The Oc4j (2) creates some system thread for this JMS connection.
    If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    Saw if this situation repeats some times that amount of the system thread in oc4j (2) is grow.
    To me has answered:
    In 10.1.3, the supported connection path is through the Resource Adapter (using OracleASjms.rar). The Resource Adapter offers many benefits, including the removal of stale connection threads. You have configured your application to bypass the Resource Adapter and use a direct path to OC4J JMS. You will need to create a resource mapping from your OC4J JMS admin objects (queues, topics, and connection factories) to new Resource Adapter admin objects. You can find the details of how to do this in the documentation for OC4J 10g (10.1.3) Developer Preview 3 on OTN.
    You can find the link to the documentation for OC4J DP3 here:
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/index.html
    Then I have tried Variant 2:
    I need to receive connection with remote JMS (2) via generic JMS resource adapter (OracleAS Jms).
    In OC4J (2), it is necessary сonfigure the generic JMS resource adapter (OracleAS Jms) to work with Queue "jms/demoQueue".
    According to the documentation Oracle ® Containers for J2EE Services Guide10g Release 2 (10.1.3) and example
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/howtos/how-to-jca-intro/doc/how- to-jca-intro.html anything it is not necessary to do.
    Note that if you use the generic JMS resource adapter in an OC4J 10.1.3 version that is newer than the OC4J 10.0.3 Developer Preview 2, you can skip. In OC4J 10.1.3 it is a step is already made.
    Code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2) /app (2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup (" java:comp/resource/oc4jjms/jms/QueueCon nectionFactory ");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (" java:comp/resource/oc4jjms/jms/demoQueu e ");
    ic.close ();
    while (true)
    // - send in JMS (2)
    This code works.
    But!!!!!!
    The problem - removal of stale connection threads in OC4J (2) instances has not solve. If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    How to me to write a code of connection with JMS (2) in Servlet (1), that Resource Adapter (in OC4J (2)) the removal of stale connection threads ???

    I have two app server instances " OC4J (1) " and " OC4J (2) ". (snandalone 10.1.3.0.0 - Developer Preview 3 (build 041119.0001.2385)). The containers work on Windows2000 in different machines connected by the LAN.
    OC4J (1):
    I have J2ee of the application [app(1)] (ex. Servlet (1) or MDB (1)) in OC4J (1).
    OC4J (2):
    I have J2ee of the application [app(2)] deploy in OC4J (2) [included Servlet (2) or MDB (2)] . The Servlet (2), or MDB (2) - empty stub, for example code Servlet2:
    package mypackage;
    import javax.servlet. *;
    import javax.servlet.http. *;
    import java.io. PrintWriter;
    import java.io. IOException;
    public class Servlet1 extends HttpServlet
    private static final String CONTENT_TYPE = " text/html; charset=windows-1251 ";
    public void init (ServletConfig config) throws ServletException
    super.init (config);
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    response.setContentType (CONTENT_TYPE);
    PrintWriter out = response.getWriter ();
    out.println (" < html > ");
    out.println (" < head > < title > Servlet1 < /title > < /head > ");
    out.println (" < body > ");
    out.println (" < p > The servlet has received a GET. This is the reply. </p > ");
    out.println (" < /body > < /html > ");
    out.close ();
    I have configuration JMS (2) Queue in jms.xml on OC4J (2):
    < jms-server...... port = "9127"
    < queue name = " Demo Queue " location = "jms/demoQueue" > <description> A dummy queue </description> </queue>
    < queue-connection-factory name = "jms/QueueConnectionFactory" location = "jms/QueueConnectionFactory" / >
    </jms-server>
    It JMS (2) Queue already is present in an OC4J 10.1.3 version.
    My task:
    The J2ee application (1) (ex. Servlet (1)) on OC4J (1) it is necessary to receive connection with JMS (2) (on remote OC4J (2)).
    Variant 1: a code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2)/app(2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup ("jms/QueueConnectionFactory");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup ("jms/demoQueue");
    ic.close ();
    while (true)
    // - send in JMS (2)
    Problem:
    The Servlet (1) [in oc4j (1)] established JMS connection with oc4j (2) and begins to pass the messages [in JMS Queue (2)].
    The Oc4j (2) creates some system thread for this JMS connection.
    If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    Saw if this situation repeats some times that amount of the system thread in oc4j (2) is grow.
    To me has answered:
    In 10.1.3, the supported connection path is through the Resource Adapter (using OracleASjms.rar). The Resource Adapter offers many benefits, including the removal of stale connection threads. You have configured your application to bypass the Resource Adapter and use a direct path to OC4J JMS. You will need to create a resource mapping from your OC4J JMS admin objects (queues, topics, and connection factories) to new Resource Adapter admin objects. You can find the details of how to do this in the documentation for OC4J 10g (10.1.3) Developer Preview 3 on OTN.
    You can find the link to the documentation for OC4J DP3 here:
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/index.html
    Then I have tried Variant 2:
    I need to receive connection with remote JMS (2) via generic JMS resource adapter (OracleAS Jms).
    In OC4J (2), it is necessary сonfigure the generic JMS resource adapter (OracleAS Jms) to work with Queue "jms/demoQueue".
    According to the documentation Oracle ® Containers for J2EE Services Guide10g Release 2 (10.1.3) and example
    http: // www.oracle.com/technology/tech/java/oc4 j/1013/howtos/how-to-jca-intro/doc/how- to-jca-intro.html anything it is not necessary to do.
    Note that if you use the generic JMS resource adapter in an OC4J 10.1.3 version that is newer than the OC4J 10.0.3 Developer Preview 2, you can skip. In OC4J 10.1.3 it is a step is already made.
    Code in Servlet (1):
    Hashtable env=new Hashtable (8);
    env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2) /app (2):23792 ");
    env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
    env.put (Context. SECURITY_PRINCIPAL, "admin");
    env.put (Context. SECURITY_CREDENTIALS, "admin");
    env.put ("dedicated.connection", "true");
    InitialContext ic = new InitialContext (env);
    QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
    ic.lookup (" java:comp/resource/oc4jjms/jms/QueueCon nectionFactory ");
    QueueConnection connection = connectionFactory.createQueueConnection ();
    connection.start ();
    queueSession =
    connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
    Queue queue = (Queue) ic.lookup (" java:comp/resource/oc4jjms/jms/demoQueu e ");
    ic.close ();
    while (true)
    // - send in JMS (2)
    This code works.
    But!!!!!!
    The problem - removal of stale connection threads in OC4J (2) instances has not solve. If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
    How to me to write a code of connection with JMS (2) in Servlet (1), that Resource Adapter (in OC4J (2)) the removal of stale connection threads ???

  • JMS Dequeue not working after upgrade from 11gR1 to 11gR2

    Our database was migrated to a new database with new hardware running 11gR2
    enqueue appears to be working as the queue table just grows and grows
    However, my JMS async subscriber is never getting messaged.
    Is there any logical reason for this?
    in select * from all_queues my queue does show ENQUEUE and DEQUEUE enabled
    also
    the user that makes the subscription has DEQUEUE grant priviledge
    Is there anything else that is needed for this to work?
    I have already recreated the queue and queue table and ended up in the same place with no JMS consumer being able to consume.
    when enabling trace on JMS I see
    Caused by: oracle.jms.AQjmsException: JMS-122: Internal error Corrupted message
         at oracle.jms.AQjmsError.throwEx(AQjmsError.java:334)
         at oracle.jms.AQjmsUtil.getTextData(AQjmsUtil.java:718)
         at oracle.jms.AQjmsTextMessage.readGenMessageContainer(AQjmsTextMessage.java:322)
         at oracle.jms.AQjmsTextMessage.<init>(AQjmsTextMessage.java:172)
         at oracle.jms.AQjmsConsumer.dequeue(AQjmsConsumer.java:2481)
    What incompatibilities exist b/w 11gR1 and 11gR2 ... my client is using aqapi 11.1
    Edited by: steffi on Jan 14, 2013 3:14 PM

    It's looking like it was a missing jar in this case the orai18n.jar
    Is there any kind of release notes for how to move working AQ from 11gR1 to 11gR2?

  • Problem with EJB and JMS - Failed to obtain/create connection

    hello ejb and jms programmers,
    My problem is my topic MDB keep on retrieving the same message when there is a database connection failure. Maybe somebody could help me how to prevent to retrieve the same data?
    Given:
    - I purposedly turn off the pointbase database because im testing my error handling.
    - Im using SJSAS 8 as my application server.
    - My message Driven Bean of topic type.
    - Im using CMP for my entity bean
    Here is the scenario of whats happening - step by step:
    1. A separate application publishes a message to JMS queue server
    2. My MDB retrieves this message and do some processing then inserts a record (transaction history) in my database
    3. But my db is turned off or down
    4. My MDB sends a successful processing reply to the JMS queue server
    5. Then i noticed that my server.log keeps on growing so when i opened it, the record was not inserted and printed the stacktrace below "RAR5117 : Failed to obtain/create connection. Reason : javax.transaction.SystemException" (complete stacktrace below)
    6. I understand the cause of the stacktrace is because the DB is turned off. But what i dont understand is that my MDB keeps on reading the same message. Since my MDB is of topic type, isnt a topic MDB supposedly reads a message only once???
    So my questions are:
    1. how do i handle insert database error?
    2. how can i stop my MDB from processing the same message?
    3. any better suggestions?
    Thank you in advance :)
    leigh
    *** more complete stack trace ***
    [#|2005-01-09T15:35:57.097+0800|WARNING|sun-appserver-pe8.0.0_01|javax.enterprise.system.core.transaction|_ThreadID=17;|JTS5041: The resource manager is doing work outside a global transaction
    javax.transaction.xa.XAException
         at com.pointbase.xa.xaException.getXAException(Unknown Source)
         at com.pointbase.xa.xaConnectionResource.start(Unknown Source)
         at com.sun.gjc.spi.XAResourceImpl.start(XAResourceImpl.java:162)
    [#|2005-01-09T15:35:57.167+0800|SEVERE|sun-appserver-pe8.0.0_01|javax.enterprise.resource.resourceadapter|_ThreadID=17;|RAR5027:Unexpected exception in resource pooling
    javax.transaction.SystemException
         at com.sun.jts.jta.TransactionImpl.enlistResource(TransactionImpl.java:185)
         at com.sun.enterprise.distributedtx.J2EETransaction.enlistResource(J2EETransaction.java:360)
         at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.enlistResource(J2EETransactionManagerImpl.java:303)
         at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.enlistResource(J2EETransactionManagerOpt.java:115)
    [#|2005-01-09T15:35:57.177+0800|WARNING|sun-appserver-pe8.0.0_01|javax.enterprise.resource.resourceadapter|_ThreadID=17;|RAR5117 : Failed to obtain/create connection. Reason : javax.transaction.SystemException|#]
    [#|2005-01-09T15:35:57.227+0800|WARNING|sun-appserver-pe8.0.0_01|javax.enterprise.resource.resourceadapter|_ThreadID=17;|RAR5114 : Error allocating connection : [Error in allocating a connection. Cause: javax.transaction.SystemException]|#]
    [#|2005-01-09T15:35:57.237+0800|SEVERE|sun-appserver-pe8.0.0_01|javax.enterprise.system.container.ejb|_ThreadID=17;|EJB5071: Some remote or transactional roll back exception occurred
    com.sun.jdo.api.persistence.support.JDODataStoreException: JDO77006: SQL exception: state = null, error code = 0.
    NestedException: java.sql.SQLException: Error in allocating a connection. Cause: javax.transaction.SystemException
    FailedObjectArray: [[email protected]5ac]
         at com.sun.jdo.spi.persistence.support.sqlstore.impl.TransactionImpl.getConnectionInternal(TransactionImpl.java:1444)
         at com.sun.jdo.spi.persistence.support.sqlstore.impl.TransactionImpl.getConnection(TransactionImpl.java:1339)

    Hi annie,
    Wherever you are handling database transactions,
    you'd not be able to create a Connection if database
    is closed (I think you mentioned turning off the
    database) then at this condition, you should
    certainly throw a System level exception and stop all
    processing with some meaningful flow to indicate a
    failure (like display message on UI). Even
    network problems are handled by exceptions... so I
    don't see a reason why you didn't wrap it in the
    first place.
    Anyway, try handling specific exceptions rather than
    the general Exception... this will give you a better
    idea of what to do in case of an exception.Yes i know this. I am practicing this in my non-j2ee server applications. But the j2ee app im making, i just pass the db url in the descriptor and the app server automatically creates the connection for my app. So where would i put exception handling?
    2. how can i stop my MDB from processing the same
    message?Guaranteed delivery is not supposed to stop
    processing. It will continue to process the message
    after certain intervals till the message is
    delivered. You shouldn't deliver it at all, if you
    are able to detect that the database is off
    The problem here is that my MDB automatically retrieves the message from the JMS queue server. Im not the one retrieving the messages manually.
    My assumed behavior of topic MDB is once the a certain MDB retrieves a message it will not retrieve the same message anymore.
    thank you in advance.
    leigh

  • How can tear down the growing barriers to education using iphone?

    Recently, I have had a growing feeling that the avialability, meaningfulness, and ease of use of educational app on the iphone has gotten worse not better.  In fact it feels like there are a growing number of specific barriers to education using the iphone.  I would like to discuss  one specific "barrier" to education--avialability in your country's app store by using a specific example--Einstien Pedometer App.
    Back in 2011, the Einstien pedometer App by Kami was all the rage. Even popular science a noneducation maganize noted this innovation-- http://www.popsci.com/technology/article/2011-04/new-ipod-app-calculates-how-spe cial-relativity-affects-your-daily-activities .  However, now you cannot get this app unless your are in china as you can see from the orginal link:
    http://itunes.apple.com/us/app/einsteins-pedometer/id427443192?mt=8
    So I ask you all for help in tear down this barrier and tearing down this wall...
    How can we tear down this barrier of country availability?
    Is there a way to contact the orginal company like Kami?
    Is there  a way to change your country and install it?  Is this safe for students to do?
    Should I contact tech support?
    This app like other by Vogt and Kuhn are important ones to me that I have found unavialable in the United States.  Measuring Relativity not just calculating it is important for the iphone future, because phones are currently one of the few mainstream devices to have a guarunteed across the board GPS chip!  Thus, unlike the innovations of Vogt and Kuhn, the Einstien Pedometer is a physics application that is only available using ones smartphone.
    This is my tech support submission, which better explains why I felt this was a barrier:
      What happened to the Einstien Pedometer App?
      Back in 2011 there was a famous Einstien's Pedometer App by Kami.  Recently as of February 2014, I found out that this app was unavailable on the App Store due to "unavailable in the United States".  The android already has a similar app called "Proper Time" by N. Thinsell.  I wanted to include this app as part of my physics smart phone laboratory series.  Specifically, I have worked painstakingly to develop a lab so that students could measure special relativity time dilation using their smart phones GPS chip.  (The lab is similar to the work of P Vogt and J Kuhn which is different from many of gimmick apps, which are only ebooks of text, not actual physics measuring devices.)  The current unavailability of this app is simply another barrier to using iphones for education.  This is why I am very disappointed right now.  Incorporating Android systems into physics high school curriculum is easy; however, I have tried many times to try to incorporate apple products into the physics curriculum to no avail.  It feels like with each successful year there are more and more barriers to using iphones for application-level understanding in physics education.  
    Message was edited by: lanebell who finished adding the rest of there comments

    Dah Veed,
    How?  No really how do I contact the app developer from a foreign country?
    Going back to my example, so far I was able to figure out alot of things about the app developer of the Einstien Pedometer app--except there contact information.  Besides prehaps seeking apples supports help in contacting the developer, do you have any other suggestions?
    Information that I know so far:
    App: Einstein's pedometer
    Developer's Name: Mitsuru kamiyama
    Language: Japanese
    AppStore Page: https://itunes.apple.com/us/artist/kami/id362020177?mt=8
    Developers really old website: http://playoffline.ddo.jp/app/
    P.S. While it didn't exactly solve the problem, your reply was very helpful, so I thank you for your reply.

Maybe you are looking for

  • Safari does not open for some users, but does on others...

    I have 5 user accounts on my laptop. Safari opens for me (admin) & two others, but crashes before it opens on two other users. They are managed accounts w/parental control but they do have permission to run Safari. So, I know the problem is within th

  • How to set the value for Power Cost in SCCM reports in Euro's?

    Hello, I have found out how to change the value of the 'cost' of the KWh for these reports (reporting) . But ther original settings where displayed and set in USD($) with some other values. I have of course changed the USD to EUR (€) in my case, but

  • Deleting pages in a signed PDF

    How do I delete pages from a digitally signed PDF? I am using Acrobat Pro X. The only option not grayed out on the tools/pages menu is extract. I believe I could do this before the latest Adobe Pro update was pushed to my computer last month.

  • Import-Module WebAdministration question

    Hello all: I am writing a script that will copy files to a local root directory for a web app we have.  Once this is done, I want to refresh the application pool.  In reading on the process, I believe I would have to import the WebAdministration modu

  • Get HU qty from ASN

    Hello, We has already establish ASN inbound connection with supplier. Problems is that different packing standard do not allow us to collect HU qty from ASN. Is there anyway to get this packing HU qtys and recorded in LA? Thanks.