Rmi and jms
It is the fouth thread for the jms and rmi. Is there anyone that can answer me?
I can run rmi and jms sample in the oc4j standalone. but if I run in the application server, there are always some errrors. I have searched all the forum and the documents about application. I found nothing helping to me.
Is there a tutoral for run rmi and jms in the application server step by step?
Was there anyone help me, I will lose my job soon.
God save me.
I installed the oracle9ias9.02 on linux 7.1. and the installation is ok. I can deploy application.
I deploy the ear file and the jsp and servlet are running ok.
In the application, there is a applet which will call the method through rmi.
and the bean which provide the rmi method will recieve jms messages in the server side.
here is the applet:
package transfer;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.rmi.*;
import java.rmi.server.*;
import java.io.*;
import java.util.*;
import com.longshine.transfer.TransferDataList; //interface file
* Title: CAO5M3H]TV187]O5M3--J5J1<`?XJ}>]4+Jd
* Description: @{SCRMI5wSC7~NqFw6K5DTransferDataList3LPr#,2ISCJMS4SJ}>]7"KM6K;q5C4+JdJ}>]!#
* Copyright: Copyright (c) 2002
* Company: longshine
* @author MuCt
* @version 1.0
public class TransferMonitor extends Applet {
boolean isStandalone = false;
TextArea textArea1 = new TextArea();
Button refresh = new Button();
Button stop = new Button();
Label data_stat=new Label(); //M3<FJ}>]OTJ>
TransferDataList DataList=null; //6(ReR;8vT63L6TOs5D=S?Z!#
/**Get a parameter value from applet param list*/
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
/**Construct the applet*/
public TransferMonitor() {
/**Initialize the applet*/
public void init() {
try {
jbInit();
catch(Exception e) {
e.printStackTrace();
/**Component initialization*/
private void jbInit() throws Exception {
setLayout(new BorderLayout());
textArea1.setText("?*J<=SJUIm7]Is:KJ}>]O{O"...\n");
refresh.setLabel("K"PB");
refresh.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
refresh_mouseClicked(e);
stop.setLabel("T]M#");
stop.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
stop_mouseClicked(e);
//data_stat.setText("M3<F");
this.add(textArea1, BorderLayout.CENTER);
this.add(refresh, BorderLayout.SOUTH);
this.add(stop, BorderLayout.EAST);
/**Start the applet
* ?*J<@{SCRMI:MT67=7~NqFw3LPrTransferDataListServer=(A"A*O5#,5wSC7=7(getPersonList,
* 5C5=ND1>8qJ=5DJ}>]#,?IRTV1=SOTJ>5=FAD;IO!#
public void start() {
String url="rmi://"+getCodeBase().getHost()+"/person_list"; //T63L6TOs5D5XV7<0remote objectC{3F!#
// System.setSecurityManager(new RMISecurityManager());//applet2;PhR*2ISCsecurityManager9\@m
try {
DataList=(TransferDataList)Naming.lookup(url);
textArea1.append(this.get_gb(DataList.getMessageList()));
catch (Exception e) {
System.out.println("Lookup RMI Server Error:"+e);
/**Stop the applet*/
public void stop() {
/**Destroy the applet*/
public void destroy() {
/**Get Applet information*/
public String getAppletInfo() {
return "Audit Data Monitor Applet";
/**Get parameter info*/
public String[][] getParameterInfo() {
return null;
/**Main method*/
public static void main(String[] args) {
TransferMonitor applet = new TransferMonitor();
applet.isStandalone = true;
Frame frame;
frame = new Frame() {
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
public synchronized void setTitle(String title) {
super.setTitle(title);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
frame.setTitle("Applet Frame");
frame.add(applet, BorderLayout.CENTER);
applet.init();
applet.start();
frame.setSize(400,320);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
frame.setVisible(true);
* Ge?U51G0GxSr5D@zJ7OTJ>J}>]#,VXPB?*J<OTJ>PB5DO{O"!#
void refresh_mouseClicked(MouseEvent e) {
textArea1.setText("?*J<=SJUPB5DIm7]HOV$O{O"#!#!#!\n");
this.start();
System.out.println("clear current text area!!!");
* reserved
void stop_mouseClicked(MouseEvent e) {
System.out.println("click stop button!!!");
public String get_gb(String s_name) {
String s_unicode="" ;
try{
s_name = s_name.trim ();
byte[] bytes = s_name.getBytes("8859-1");
s_unicode = new String(bytes,"GB2312");
}catch(UnsupportedEncodingException e){
System.out.println(e.toString());}
return s_unicode;
public String get_iso8859_1(String s_name) {
String s_unicode="" ;
try{
s_name = s_name.trim ();
byte[] bytes = s_name.getBytes("GB2312");
s_unicode = new String(bytes,"8859-1");
}catch(UnsupportedEncodingException e){
System.out.println(e.toString());}
return s_unicode;
here is the rmi bean:
package com.longshine.transfer;
import java.rmi.*;
import java.rmi.server.*;
import com.longshine.pub_func.*;
* Title: CAO5M3H]TV187]O5M3#-#-RMI Server3LPr#,4&@mRMIT63LGkGs!#
* Description: 2ISCJMS7=J=4SG06KO5M3;q5CO{O"J}>]!#
* Copyright: Copyright (c) 2002
* Company: longshine
* @author MuCt
* @version 1.0
public class TransferDataListServer {
public TransferDataListServer() {
public static void main(String[] args) {
// Read run option:start/stop from command line
if (args.length != 1) {
System.out.println("Usage: java " +"TransferDataListServer <option>");
System.exit(1);
// System.out.println("Queue name is " + queueName);
TransferDataListServer ts1 = new TransferDataListServer();
try {
String host_name=GetSysparam.getParam("web_server");
System.out.println(host_name+"------");
String url="rmi://127.0.0.1:3101/person_list";
System.out.println("Construction server implementations...");
TransferDataListImpl p1=new TransferDataListImpl();
System.out.println("binding server implementation to registry...");
Naming.rebind(url,p1);
System.out.println("Waiting for invocations from clients...");
catch (Exception e) {
System.out.println("Start RMI Server Error:"+e);
here is the impl bean:
package com.longshine.transfer;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.server.*;
import java.rmi.*;
import com.longshine.pub_func.*;
import java.sql.*;
import javax.jms.*;
import javax.naming.*;
* Title: CAO5M3H]TV187]O5M3--J5OV=S?Z5D7~NqFw@`
* Description:
* Copyright: Copyright (c) 2002
* Company: longshine
* @author MuCt
* @version 1.0
public class TransferDataListImpl extends UnicastRemoteObject
implements TransferDataList
int TotalMessage=0; //M3<FO{O"W\LuJ}!#
public TransferDataListImpl() throws RemoteException {
* 2bJTSC@}#:T63L5wSC5D7=7(#,;q5CIm7]Is:KJ}>]5DAP1m
public String getPersonList() throws RemoteException {
String sql_stmt="select * from doc_user";
int limit=0;
String user_id,name,str="";
DbOperate db1=new DbOperate();
db1.setExecQuery(sql_stmt);
ResultSet rs=db1.getExecQuery();
try {
while (rs.next() && limit<30) {
user_id=rs.getString("user_id");
name=rs.getString("name");
System.out.println("user_id:"+user_id+"---name:"+name);
str+="user_id:"+user_id+"; name:"+name+"\n";
limit++;
db1.setCloseQuery();
catch (SQLException e) {
System.out.println(e.getMessage());
return "error!!!";
return str;
* get queue name from config.properties file.
public String getQueueName() {
String queue_name="";
try {
queue_name=GetSysparam.getParam("queueName");
catch (Exception e) {
System.out.println("Get system param error:"+e);
return queue_name;
* @{SCJMS5C5=7"KM5DIs:KJ}>]PEO"!#V.:s9)?M;'6KappletJ9SCrmi7=J=5wSC;q5C!#
public String getMessageList() throws RemoteException {
String queueName = null;
Context jndiContext = null;
QueueConnectionFactory queueConnectionFactory = null;
QueueConnection queueConnection = null;
QueueSession queueSession = null;
Queue queue = null;
QueueReceiver queueReceiver = null;
TextMessage message = null;
String message_str=""; //save all message to a string .
queueName = this.getQueueName();
System.out.println("Queue name is " + queueName);
* Create a JNDI API InitialContext object if none exists
* yet.
try {
// java.util.Hashtable env=new java.util.Hashtable();
// env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.rmi.registry.RegistryContextFactory");
// env.put(Context.PROVIDER_URL,"rmi://172.18.18.128:1099");
jndiContext = new InitialContext();
catch (NamingException e) {
System.out.println("Could not create JNDI API " +
"context: " + e.toString());
System.exit(1);
* Look up connection factory and queue. If either does
* not exist, exit.
try {
queueConnectionFactory = (QueueConnectionFactory)
jndiContext.lookup("QueueConnectionFactory");
queue = (Queue) jndiContext.lookup(queueName);
} catch (NamingException e) {
System.out.println("JNDI API lookup failed: " +
e.toString());
System.exit(1);
* Create connection.
* Create session from connection; false means session is
* not transacted.
* Create receiver, then start message delivery.
* Receive all text messages from queue until
* a non-text message is received indicating end of
* message stream.
* Close connection.
try {
queueConnection =
queueConnectionFactory.createQueueConnection();
queueSession =
queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
queueReceiver = queueSession.createReceiver(queue);
queueConnection.start();
while (true) {
Message m = queueReceiver.receive(1);
if (m != null) {
if (m instanceof TextMessage) {
message = (TextMessage) m;
System.out.println("Reading message: " +
message.getText());
message_str+=message.getText()+"\n";
} else {
break;
} catch (JMSException e) {
System.out.println("Exception occurred: " +
e.toString());
} finally {
if (queueConnection != null) {
try {
queueConnection.close();
} catch (JMSException e) { System.out.println("jms expetion: "+e);}
return message_str;
all these bean will run ok in the sun j2ee envrionment, but can not work in the application server.
in the sun j2ee, I will run rmiregister and the run the rmi server, the applet then can invoke the rmi method.
in the oracle9ias application server, how i can run the rmi server
thanks
Similar Messages
-
Does ATS load testing support Java RMI and T3 protocol?
Hi Experts,
Does ATS load testing support Java RMI and T3 protocol or EJB(J2EE)?
Thanks!Joseph,
Oracle Application Testing Suite is mainly used for testing of applications from a end user perspective and offers an intuitive capture/replay for web, Siebel, EBS, JDE, Fusion apps or SOA based application through WebServices WSDL imports.
The scripting environment (Oracle OpenScript) does not support script creation by recording JAVA RBI or T3 protocol as we lack a recorder for it, but the scrips are created as pure JAVA code so you could use the JAVA language to write a small RMI cor T3 client for your testing.
We have customers that have used Application Testing Suite to test non-UI based testing, like: JMS, FTP, Tuxedo and others, but it require a bit of coding.
Please let me know if you would like to know more or discuss your options
regards
Mikael Fries
Principal Product Manager / Oracle -
Hi Folks,
We have an application where in we have to read the requests from a file and write the responses to another file. Each request has to be passed to EJB container which processes it returns the response. There are around 500000 messages in the file.
For Performance reasons what would you suggest
RMI or JMS
Thanks in advance for your suggestions
RajeevYou need to define your criteria for the solution.
RMI = Synchronous
JMS = Asynchronous -
Hello, i have a problem with an Applet. I want to connect to the JMS on a the J2EE server that is packaged with the jsdkee(SunOne?).
I use the following code
env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.cosnaming.CNCtxFactory");
env.put(Context.PROVIDER_URL, "iiop://localhost:3700");
try
ic = new InitialContext(env);
jmsFactory = (TopicConnectionFactory)ic.lookup("jms/PS/playerTopicFactory");
catch(NamingException ne) {System.err.println("NamingException in LocalAccount.initMyConnectionFactory(): "+ne);}I get the following error
NamingException in LocalAccount.initMyConnectionFactory(): javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]Does that mean that he can't access the Class? But i dont want to put rt.jar (including CNCtxFactory) into the applet! Maybe I misunderstand something...
Please help me I can't figure this out8.1 provides a "thin client" jar. See the "new JMS features" in the
8.1 release notes.
For previous WL versions, check out the
"Small Footprint Client Options for BEA WebLogic Server" white-paper
available on dev2dev.bea.com.
Note that if you choose not to use JMS, you can use the JDK's
built-in IIOP client, where 0 (zero, nada, no) WebLogic classes
are required in the client. (rmi-iiop newsgroup for details).
Tom, BEA
yag wrote:
> I am a newbie in applet and jms,I think it's possible to use the applet as the
> jms receiver client,however,I have the following quesitons need your helps:
> 1.need i configure a webapplication including the applet?which jars I need to
> package(the whole weblogic.jar) ?and how can I deploy it?
> 2.how can I specify the jndi parameters the applet need to use,such as the "weblogic.jndi.WLInitialContextFactory"
> and so on
> where and how?
>
> thanks ahead
-
Hi all, I havent really been using BPEL long neither am i very aware of how to use the various oracle products efficiently.
I do, however, need to use a BPEL process to send a JMS message. Preferably to OpenJMS. I have had a look at the samples and they all seem to work fine. However, when i try to modify the samples to use my destination queue they just bomb out with the error:
[2006/01/20 14:39:13] "{http://schemas.oracle.com/bpel/extension}bindingFault" has been thrown. less
<bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="code">
<code>GenericError</code>
</part>
<part name="summary">
<summary>null</summary>
</part>
</bindingFault>
I know, really helpful! What i think is happening is that they is no actual physical storage for the queue and there fore it cannot be written to. Also, would i be correct in thinking that 'oc4j-ra.xml' file in the folder 'integration\orabpel\system\appserver\oc4j\j2ee\home\application-deployments\default\JmsAdapter' is the only file that needs editing in order to use a different jndi? I added this section to attemp to create a new jndi for OpenJMS
<connector-factory location="eis/openjms/Queue" connector-name="Jms Adapter">
<config-property name="connectionFactoryLocation" value="QueueConnectionFactory"/>
<config-property name="factoryProperties" value="java.naming.factory.initial=org.exolab.jms.jndi.InitialContextFactory;java.naming.provider.url=rmi://localhost:1099"/>
<config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
<config-property name="isTopic" value="false"/>
<config-property name="isTransacted" value="true"/>
<config-property name="username" value="admin"/>
<config-property name="password" value="openjms"/>
</connector-factory>
Does that look correct and will (should) that expose the OpenJMS interface to any BPEL process wishing to take advantage of it? What if i wanted to use the JMSService and not the inbuilt JMS Adapter to talk to OpenJMS. What file(s) would i have to edit then in order expose the OpenJMS jndi?
I know that this is probably really simple for some (most) of you. But i've been trying to sort it out for days now to now avail. With the sheer number of configuration files im at a loss to know what bit of what file is for what component.
Thanks muchly to all kind replies in advance
Cheers
Ian HarriganHere is my confusion (I'm using J2EESDK1.3).
On a local server I did the following
j2eeadmin -addJmsFactory jms/RemoteTCF topic -props url=corbaname:iiop:mars#mars
In the app client running on the local server I had the code
ic = new InitialContext();
// JNDI lookup. The resource factory ref points to the
// Remote Connection Factory I registered
tcf = (TopicConnectionFactory)ic.lookup("java:comp/env/jms/TopicConnectionFactory");
// The env ref points to jms/Topic of the local server
pTopic = (Topic)ic.lookup("java:comp/env/jms/PTopic");
So I'm assuming that I'm using a connection factory that connect to mars and a Topic on the local box.
On remote server mars, I deployed a MDB which use
jms/TopicConnectionFactory and jms/Topic. But I'm thinking this jms/Topic and the one I used on the local box are not the same one. Right? Then how could the app client and the MDB share messages?
Some of my explanation I don't if it makes sense or not.
ConnectionFactory is a way to tell what kind of connection it could generate (Queue, Topic, Durable etc) and Where the connection would go to (local or remote).'
As for as destination, I'm not sure. How could two server share one Topic? -
What is the difference between RMI and JAX-RPC?
Dear All
First of all my understanding of RMI and JAX-RPC:
RMI is JAVA only version of RPC. It can't talk to any other language.
JAX-RPC is a part of JWSDP and if you implement your client and server with JAX-RPC, client written in any language can talk with JAX-RPC implementation.
What else makes them different and am I right with my understanding?
Finally, I would like to develop clients which will have a java class, say httpserver.java, which will act like a http server, listens to a http port. Now, Two such client will run in two different PC and I want to call a module from one client to another which should be accessible via my httpserver.java. For that which should be my choice RMI or JAX-RPC? Can I achive it with http get-post method, as I am expecting to read some value of variables from one client to the another.
Say class A has variable a, aa, aaa and clas B has variable b, bb, bbb. Now I want to read the value of b, bb, bbb from class A. How do I do that when class B is listening to a http port with my httpserver.java class.
Lastly, say B is listening to a http port and I want to send a file to B from A. How can I do that? Remember, B didn�t ask for that. How can A send a file to B when B is listening to a http port with my httpserver.java.
With regards
Mohammed Jubaer Arif
Mobile: +61-0411215302
Personal Web: http://www.geocities.com/jubairarifctg/
Org. Web.: http://www.geocities.com/halimschamber/simply put, RMI allows you to (semi) transparently treat remote objects as if they were local, and your distributed application can be written (more or less) like a "normal" java app. Sockets just give you a "raw" connection to work with, and you get to build up your application from that.
I hope that helped
Lee -
Using socket and JMS protocol in the same logic for OSB
Hi frnds,
In my organization...the only communication protocol used is "socket" protocol. However, I want to use JMS protocol to process incoming messages. Can somebody help me figuring out how to go about it.
Using some nice OSB blogs, I am able to create the JMS connection factory and JMS queues in weblogic. And that works fine when I select the communication protocol as JMS while creating the BS and PS.
What should be my message flow when the communication protocol used is "socket" for both BS and PS.
salilHi,
Make the BS as JMS and the PS as socket, in the PS's flow do a route for the BS... Then if an external call is made to the PS via socket, it will send a messages to a JMS queue...
Hope this helps...
Cheers,
Vlad -
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 -
Please help: RMI and Swing/AWT issue
Hi guys, I've been having a lot of trouble trying to get a GUI application to work with RMI. I'd appreciate any help. Here's the story:
I wrote a Java application and its GUI using Netbeans. In a nutshell, the application is about performing searches. I am now at the point where I need exterior programs to use my application's search capabilities, thus needing RMI. Such exterior programs are to call methods currently implemented in my application.
I implemented RMI, and got the client --> server communication working. However, the GUI just breaks. It starts outputting exceptions, gets delayed, doesn't update properly, some parts of it stop working.... basically hysterical behavior.
Now take a look at this line within my server class:
Naming.rebind("SearchProgram", mySearchProgram);
If I take it out, RMI obviously does not work... but the application and its GUI work flawlessly. If I put it in, the RMI calls work, but the GUI's above symptoms occur again. Among the symptoms are null pointer exceptions which all look similar, are related to "AWT-EventQueue-0", and keep ocurring. Here's just snippet of the errors outputted:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.metal.MetalScrollBarUI.getPreferredSize(MetalScrollBarUI.java:102)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1615)
at javax.swing.JScrollBar.getMinimumSize(JScrollBar.java:704)
at javax.swing.ScrollPaneLayout.minimumLayoutSize(ScrollPaneLayout.java:624)
at java.awt.Container.minimumSize(Container.java:1598)
at java.awt.Container.getMinimumSize(Container.java:1583)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1697)
at java.awt.BorderLayout.minimumLayoutSize(BorderLayout.java:634)
at java.awt.Container.minimumSize(Container.java:1598)
at java.awt.Container.getMinimumSize(Container.java:1583)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1697)
at java.awt.BorderLayout.minimumLayoutSize(BorderLayout.java:634)
at java.awt.Container.minimumSize(Container.java:1598)
at java.awt.Container.getMinimumSize(Container.java:1583)
at javax.swing.JComponent.getMinimumSize(JComponent.java:1697)
at javax.swing.BoxLayout.checkRequests(BoxLayout.java:433)
at javax.swing.BoxLayout.layoutContainer(BoxLayout.java:375)
at java.awt.Container.layout(Container.java:1401)
at java.awt.Container.doLayout(Container.java:1390)
at java.awt.Container.validateTree(Container.java:1473)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validateTree(Container.java:1480)
at java.awt.Container.validate(Container.java:1448)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredMenuItemSize(BasicMenuItemUI.java:400)
at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredSize(BasicMenuItemUI.java:310)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1615)
at javax.swing.BoxLayout.checkRequests(BoxLayout.java:434)
at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:251)
at javax.swing.plaf.basic.DefaultMenuLayout.preferredLayoutSize(DefaultMenuLayout.java:38)
at java.awt.Container.preferredSize(Container.java:1558)
at java.awt.Container.getPreferredSize(Container.java:1543)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1617)
at javax.swing.JRootPane$RootLayout.layoutContainer(JRootPane.java:910)
at java.awt.Container.layout(Container.java:1401)
at java.awt.Container.doLayout(Container.java:1390)
at java.awt.Container.validateTree(Container.java:1473)
at java.awt.Container.validate(Container.java:1448)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
There are no complaints about anything within my code, it's all GUI related whenever I make a bind() or rebind() call.
Again, any help here would be great... cause this one's just beating me.
Thanks!Maybe you want to change that worker thread to
not do RMI but anything else (dummy data) to see if it really is RMI, I doubt it, I think you are updating some structures that have to do with swing GUI and hence you will hang.
Just check this out. -
Compare creation of Datasources and JMS Queues : SAP vs (Weblogic/Websphere
I am used to creating JDBC Datasources and JMS Queues on Weblogic/Websphere thru their Admin applications.
Can someone compare/contrast that process to that on SAP's netweaver ( either using NWA or Visual Administrator).
ThanksHi Parag,
For the process of creating JDBC datasources and JMS resources @ SAP NetWeaver you can refer to the documents here on SDN and help.sap.com, and compare that process for yourself, thus not being influenced by others' biased or unbiased opinions.
For NetWeaver 04 and 04s these would be:
<a href="http://help.sap.com/saphelp_nw04/helpdata/en/b0/6e62f30cbe9e44977c78dbdc7a6b27/frameset.htm">JDBC Connector Service</a>
<a href="http://help.sap.com/saphelp_nw04/helpdata/en/22/cf4e71c46cdb4da31153be96c5389f/frameset.htm">JMS Connector Service</a>
For the <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/javaee5">Java EE 5 Edition</a>:
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/7bb9751d-0e01-0010-febd-c3adce2c408c">Working with Database Tables, DataSources and JMS Resources</a>
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/806e75a0-0e01-0010-2587-fc518de8ac1a">Administration Guide</a> -> section "Application Resources Management" (pages 89-104)
Hope that helps!
Your feedback/findings are very welcome!
-Vladimir -
What is the Difference between AQ adpater and JMS adapter??
What is the Difference between AQ adpater and JMS adapter in BPEL11g??
In what scenarios we go for AQ and for what scenarios we go for JMS adapter???Go for AQ when using Oracle Advanced Queueing (the database stuff).
Use JMS when using JMS (in memory of file queues)
hth,
Peter Paul -
Hi there,
I have the following problem.
I opened a ticket in Day Care Support system, about CRX users/group membership that got lost while synchronization with our LDAP server.
Although when the user and the group had been created (and therefore taken from that same LDAP server), the membership was good.... but after some time the membership got lost......
So what i am trying to do now is a Java program that connects to CRX via RMI.
And gets the list of all the users from a group (aka membership).
The idea is to monitor the membership each seconds.
But when trying to get the property "rep:members" of the group, I have the following exception :
javax.jcr.ValueFormatException: Unknown value type 10
at org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:13 9)
at org.apache.jackrabbit.rmi.server.ServerProperty.getValues(ServerProperty.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)"
I searched a little bit and found that "10" is the number for type WeakReference.
That's normal to me because memberships are stored in the group as a list reference to users linked to that group....
Anyways, what's not normal to me is that when the type is "10" the API does not let me get the Value (cf. ServerProperty.getValues() method)
Here is the program:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.imageio.spi.ServiceRegistry;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.RepositoryFactory;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.Value;
public class Test {
public static void main(String[] args) {
String uri = "rmi://sma11c02.............:1234/crx";
String username = "admin";
char[] password = {....................};
String workspace = "crx.default";
String nodePath = "/home/groups/a";
Repository repository = null;
Session session = null;
try {
// Connection to repository via RMI
Map<String, String> jcrParameters = new HashMap<String, String>();
jcrParameters.put("org.apache.jackrabbit.repository.uri", uri);
Iterator<RepositoryFactory> iterator = ServiceRegistry.lookupProviders(RepositoryFactory.class);
while (null == repository && iterator.hasNext()) {
repository = iterator.next().getRepository(jcrParameters);
if (repository == null) {
throw new IllegalStateException("Problem with connection to the repository...");
// Creation of a session to the workspace
session = repository.login(new SimpleCredentials(username, password), workspace);
if (session == null) {
throw new IllegalStateException("Problem with creation of session to the workspace...");
// Get the targetted node
Node node = session.getNode(nodePath);
System.out.println("Node : " + node.getName());
System.out.println();
PropertyIterator properties = node.getProperties();
System.out.println("List of properties for this node :");
while (properties.hasNext()) {
Property property = properties.nextProperty();
System.out.print("\t"+property.getName() + " : ");
if (property.isMultiple()) {
Value[] values = property.getValues();
for (int i = 0; i < values.length; i++) {
System.out.print(values[i]);
if (i+1 != values.length) {
System.out.print(", ");
System.out.println();
} else {
Value value = property.getValue();
System.out.println(value);
System.out.println();
NodeIterator kids = node.getNodes();
System.out.println("List of children nodes for this node :");
while (kids.hasNext()) {
Node kid = kids.nextNode();
System.out.println("\tChild node : "+kid.getName());
PropertyIterator kidProperties = kid.getProperties();
System.out.println("List of properties for this child :");
while (kidProperties.hasNext()) {
Property property = kidProperties.nextProperty();
System.out.print("\t"+property.getName() + " : ");
if (property.isMultiple()) {
Value[] values = property.getValues();
for (int i = 0; i < values.length; i++) {
System.out.print(values[i]);
if (i+1 != values.length) {
System.out.print(", ");
System.out.println();
} else {
Value value = property.getValue();
System.out.println(value);
System.out.println();
} catch (RepositoryException e) {
e.printStackTrace();
} finally {
if (session != null) {
session.logout();
Here is the output of the below program:
Node : a
List of properties for this node :
jcr:createdBy : admin
jcr:mixinTypes : mix:lockable
jcr:created : 2011-10-25T16:58:48.140+02:00
jcr:primaryType : rep:AuthorizableFolder
List of children nodes for this node :
Child node : administrators
List of properties for this child :
jcr:createdBy : admin
rep:principalName : administrators
rep:members : javax.jcr.ValueFormatException: Unknown value type 10
at org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:13 9)
at org.apache.jackrabbit.rmi.server.ServerProperty.getValues(ServerProperty.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:171)
at java.security.AccessController.doPrivileged(AccessController.java:284)
at sun.rmi.transport.Transport.serviceCall(Transport.java:167)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:547)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:802)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:661)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919)
at java.lang.Thread.run(Thread.java:736)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at org.apache.jackrabbit.rmi.server.ServerProperty_Stub.getValues(Unknown Source)
at org.apache.jackrabbit.rmi.client.ClientProperty.getValues(ClientProperty.java:173)
at Test.main(Test.java:96)
Here is the list of jar files i'm using with this program:
2862818581 61388 crx-rmi-2.2.0.jar
732434195 335603 jackrabbit-jcr-commons-2.4.0.jar
1107929681 411330 jackrabbit-jcr-rmi-2.4.0.jar
3096295771 69246 jcr-2.0.jar
1206850944 367444 log4j-1.2.14.jar
685167282 25962 slf4j-api-1.6.4.jar
2025068856 9748 slf4j-log4j12-1.6.4.jar
Finally, we are using CQ 5.4 (CRX 2.2) with the latest hotfix and under Websphere 7.0
Best regards,
Vincent FINETJe suis absent(e) du bureau jusqu'au 17/04/2012
Je suis absent.
Je répondrai à votre sollicitation à mon retour le 17 avril 2012.
Cordialement,
Vincent FINET
Remarque : ceci est une réponse automatique à votre message "[CQ5]
Connection to CRX via RMI and getting WeakReference value..... with an
exception!" envoyé le 13/4/12 0:32:14.
C'est la seule notification que vous recevrez pendant l'absence de cette
personne.
Le papier est un bien precieux, ne le gaspillez pas. N'imprimez ce document que si vous en avez vraiment besoin !
Ce message est confidentiel.
Sous reserve de tout accord conclu par ecrit entre vous et La Banque Postale, son contenu ne represente en aucun cas un engagement de la part de La Banque Postale.
Toute publication, utilisation ou diffusion, meme partielle, doit etre autorisee prealablement.
Si vous n'etes pas destinataire de ce message, merci d'en avertir immediatement l'expediteur. -
EJB and JMS (newbie)
I'm looking to deploy what is essentially a message-broking service. A bean that
will invoke a helper class which will dequeue messages.
Basically I want to set up our consumer to invoke a handler, which will invoke
a bean that provides message-broking services as described above.
The handler that invokes the bean is to be called from the WLSConsumer. The problem
is that I'm now getting a java.io.NotSerializableException on the WLS consumer.
This is probably a really obvious question, but how can I get around this?
My structure is:
Consumer >> Handler >> Bean >> Helper
The consumer is to call the handler, which uses the bean's helper class to pull
a message off the queue, and do some intermediate processing on it.
We're using an older version of J2EE, on Weblogic 5.1.
Which classes do I need to implement Serializable?
Thanks in anticipation.
Hi Seoh!
Both stateles and JMS can participate in a single transaction, but because two
resource managers are being used they must use the 2PC protocol, In oreder to
use the 2PC u need to get the license from the bea and after that u need to enable
the 2PC in WLS through admin conbsole. But remember that transactions in stateless
beans cant span across multiple method incocations
Thanx,
Aravind -
Content Conversion - JDBC and JMS
Can we use File Content Conversion with JDBC and JMS ?
Hi,
How To Use the Content Conversion Module in JMS Adapter - https://websmp106.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000582377&
check this for JMS content conversion:
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f02d12a7-0201-0010-5780-8bfc7d12f891
Check the how to guide provided by prabhu and also this link on the XMl To TeXtCoversion Module,
http://help.sap.com/saphelp_nw04/helpdata/en/44/748d595dab6fb5e10000000a155369/content.htm
Ref How To Use the Content Conversion Module in JMS Adapter -
https://websmp106.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000582377&
See this weblogs which was shown with examples:
How to use SAP's WebAS J2EE's JMS Queue in Exchange Infrastructure
Sync/Async communication in JMS adapter without BPM (SP19)
Async/Sync Communication using JMS adapter without BPM (SP 19)
Exploring JMS and SAP-XI JMS Adaper
Configuring the sender JMS adapter
http://help.sap.com/saphelp_nw2004s/helpdata/en/f4/2d6189f0e27a4894ad517961762db7/content.htm
Configuring the receiver JMS adapter
http://help.sap.com/saphelp_nw2004s/helpdata/en/10/b1b4c8575a6e47954ad63438d303e4/content.htm
Check JMS Adapter section of this blog by Sravya:
Aspirant to learn SAP XI...You won the Jackpot if you read this!-Part III
Also information related to Provider-specific settings are available
http://help.sap.com/saphelp_nw2004s/helpdata/en/cd/d85a9d6fab7d4dbb7ae421f710626c/frameset.htm
Plz do refer the following threads:
JMS Content Conversion - no CR/LF
Message (Data) getting lost after JMS Content Conversion(Sender)
Message (Data) getting lost after JMS Content Conversion(Sender)
Message (Data) getting lost after JMS Content Conversion(Sender)
Regards,
Vinod. -
Configuration for JMS Adapter Sensor action and JMS Queue sensor action..!!
Hi,
Id like my BPEL process to send an XML message to JMS on Websphere,I was able to do this through a JMS adapter.But I would more like to add sensors into my process which would really do the same thing - send an XML message to JMS Q.
Now I understand that there are two ways to do this,JMS Queue and JMS Adapter - thorugh bpel sensor action.
I am able to use JMS Queue and it works fine , but adds its own xml tags to the message,Is there any way I could send only my xml payload as a message to the queue??
Also could any1 tell me what is the configuration for JMS Adapter sensor action?
Any suggestions how do I go about it??Hey Anirudh,
Thanx for the response :-)
All these hold good when I have an AQ adaptor right,But the thing is I want to send a message to a 'JMS' queue with out actually using an adapter configuration wizard and everythng..So I resolved to JMS queue Sensor action..Heres the xml snippet from the sensorAction.xml files which is generated..
<actions targetNamespace="http://xmlns.oracle.com/Test_JMS_Logging" xmlns="http://xmlns.oracle.com/bpel/sensor" xmlns:tns="http://xmlns.oracle.com/Test_JMS_Logging" xmlns:pc="http://xmlns.oracle.com/bpel/sensor">
<action name="JMS_LogEntry" publishName="" publishType="JMSQueue" enabled="true" filter="" publishTarget="jms/L_Queue">
<property name="JMSConnectionFactory">jms/L_QueueCF</property>
<sensorName>ActivitySensor_JMS</sensorName>
</action>
</actions>
This works grt and adds messages to the queue..But adds its own header info according to the sensor.xsd loacted at the Oracle_home\bpel\system\xmllib\ folder.
Right now the XML message added to the Queue is:-
<actionData xmlns="http://xmlns.oracle.com/bpel/sensor">
<header>
<sensor sensorName="ActivitySensor_JMS" classname="oracle.tip.pc.services.reports.dca.agents.BpelActivitySensorAgent" kind="activity" target="AddLEntr
y" xmlns:pc="http://xmlns.oracle.com/bpel/sensor" xmlns:ns2="http://www.ulrhome.com/2008/10/L_Entry" xmlns:tns="http://xmlns.oracle.com/Test_JMS">
<activityConfig evalTime="completion">
<variable outputDataType="string" outputNamespace="http://www.w3.org/2001/XMLSchema" target="$WriteL_Produce_Message_InputVariable/L_Entry/ns2:L_Entry/ns2:LCName"/>
</activityConfig>
</sensor>
<instanceId>950016</instanceId>
<processName>Test_JMS</processName>
<processRevision>v2009_04_15__40833</processRevision>
<domain>default</domain>
<timestamp>2009-04-15T11:21:23.596-04:00</timestamp>
<midTierInstance>app01.ulrhome.com:9700</midTierInstance>
</header>
<payload>
<activityData>
<activityType>scope</activityType>
<evalPoint>completion</evalPoint>
<durationInSeconds>0.011</durationInSeconds>
<duration>PT0.011S</duration>
</activityData>
<variableData>
<dataType>12</dataType>
<data>
<ns0:LCName xmlns:ns0="LC_Test1http://www.ulrhome.com/2008/10/L_Entry">LC_Test1</ns0:LCName>
</data>
<queryName/>
<target>$WriteL_Produce_Message_InputVariable/L_Entry/ns2:L_Entry/ns2:LCName</target>
<updaterName>AddL_Entry</updaterName>
<updaterType>scope</updaterType>
</variableData>
</payload>
</actionData>
My requirement is that I need to add a sensor to the BPEL process which posts 'Only my payload message to the JMS queue'..
What I would want the message in the Queue to be is : -
<data>
<ns0:LCName xmlns:ns0="LC_Test1http://www.ulrhome.com/2008/10/L_Entry">LC_Test1</ns0:LCName>
</data>
Also while creating a Sensor action I get another option as JMS Adaptor,I am not sure of what value to type in this wizard..Heres what I keyed in..M sure this is not right..Cos it dosnt work :-)
<action name="SensorAction_JMS" publishName="" publishType="JMSAdapter" enabled="true" filter="" publishTarget="jms/LoggingQueue">
<property name="JMSConnectionName">Log</property>
</action>
</actions>
Could any 1 tel me what values are the right values..And does JMS Adapter mean that I have to create a JMS Apator in the project and give that connection name as a Value..
I am not finding sufficiant Documentation for 'JMS Adapter' so M clueless and right now any help will be appriciated :-)
Regards,
Akshatha.
Maybe you are looking for
-
ClamAV fails to scan for viruses in emails [CLAWS MAIL]
I've recently switched from Thunderbird to Claws Mail and ran into one small, but annoying, problem. I want to use ClamAV + the clamav extension for claws mail to scan for viruses, however it does seem to have permission problems. clamd is running, u
-
hai bro,. i got some error when i try configure eSSO-PG to OIM 9.1.0.2_BP7 Error : Invoking APICommandInvoker. Invoking command add_credential Populating arguments for command add_credential Returning 'operation' for command add_credential No Executi
-
Does not open. Instead Microsoft error message "encounters a problem and needs to close". I have already tried the uninstall & reinstall "solution". What else can I do. I have a paid for document I would like to read. Thanks.
-
I purchased a new Windows 8 PC and I use Outlook 2010 for my calendar. With my old Windows 7 PC and Outlook 2010, my calendar would sync with my Iphone 5, but with the new Windows 8 PC and Outlook 2010, it does not, and I can't figure out how to snyc
-
Putting my music on an MP3 player. HELP!
I'm a new user to ITunes and I cannot figure out how to put my music on the MP3 Player. Can someone please help me figure this out? Much Appreciated.