How to transmit an exception from an EJB to a client ?
I have a deployed EJB with a business method that throws an exception if something goes wrong. When the EJB is called (by a remote Java client) the client is not getting any exception if something goes wrong in the EJB's business method. This is how the EJB's business method is currently coded:
void m() throws RemoteException
try { //stuff
} catch( Exception e ) {
throw RemoteException(e.getMessage());
} finally {
// clean up
What is wrong with this ? Any help is appreciated.
Thanks,
Colm.
i think have to do something like this
void m() throws RemoteException
try { //stuff
} catch( Exception e ) {
throw new RemoteException(e.getMessage());
} finally {
// clean up
look the "new", and have to create a custom class exception.
look here:
http://www-128.ibm.com/developerworks/library/j-ejbexcept.html
http://docs.jboss.org/jbossas/javadoc/4.0.2/javax/ejb/EJBException.java.html
http://docs.jboss.org/jbossas/javadoc/4.0.2/javax/ejb/
Similar Messages
-
How to create ErrorLog file from Session EJB
Hi my friends,
I have the need to write the Exception Errors from Session EJBs into log file. The problem is my project is the multi-user application and many EJBs' user transactions need to log the errors to only one log file, if I use EJB named ErrorLogWriter as the main component for log file writer and the other EJBs just reference to this EJB to log the errors, each request will create one instance of ErrorLogWriter therefore we can't access to only one log file. Somebody told me that it should be OK if we use servlet as the log file writer because only one servlet instance is initialized for multi-requests, and the other EJBs just call this servlet. Do you have any ideas or suggestion for this matter? If using servlet is the right solution, can I call servlet method from Session EJBs? and how?
Thanks in advance for any help
Quoc NguyenLook for log4j -
http://jakarta.apache.org/ ( then side menu ) -
How to throw custom exception from sessionbean
I define an AppException generalize from EJBException.
public class AppException extends EJBException{
when error occurs in sessionbean,I throw AppException, Container perform rollback operation. but at client. I only get EJBException, Why? and How can I get AppException from sessionbean?AppException extends RuntimeException
-
How to reverse Transport requests from sand box to development client
Dear all,
I am doing some testing on Sand box, I made some transport requests from development to sandbox, which effected some settings in sandbox.
Now I want to reverse those transport request from sand box to development, unfortunately I didn't make any note of transport requests which I transported from Development to Sandbox.
Please educate me how to reverse transport requests from sand box to development.
your suggestions are highly appreciated
thank you
Venu GopalThere is no reverse, you have to create a new transport with the original settings.
Programs keep track of their versions and are easier to pull a previous version, configuration can be tougher, open all the folders in SE10 to see if you can determine the configuration changes. -
How To Handle SQL Exceptions in Session EJB Bean
Hi,
we are working on toplink JPA. My use case is I have an emp table with columns as "empid" , "emp name" , "job" with "empid" as primary Key. Here I'm creating a record in the Database by using a jspx page. Here My problem is when I'm entering a duplicate value for the empid I'm getting "ORA-00001: unique constraint (constraint_name) violated" . I'm able to catch the exception in the jspx backing bean where I'm calling the JPA insert method, But i could not catch the exception in the sessionEJB Bean. Is there any way to catch such exception in the sessionEJB.
could anyone help me out.
Thanks in Advance.
regards,
PrapanSolYou should be able to call flush on your EntityManager in your SessionBean to trigger the exception.
Note that the transaction will still be rolled back even if you catch this exception. -
How to detect JBO Exception from within Apps Module Custom Method ?
Hi all,
I have a custom method in apps module (AM) to set "Status" attribute to "A' in an antity, this is for approval.
Also there is a rule that the transaction cannot be approved if it is already cancelled by another user (in multi user environment).
The problem is :
If the AM custom method fail (because it throws JBOException in the entity setter method), How can I know that it fails ?
and report it back to the backing beans that call the custom method ?
Thank you for your help,
xtanto
Below is the code :
1. create a custom method in AM to do : setStatus ("A") ;
public void approve(){
ViewObject bphVo = findViewObject("BpHView1");
BpHViewRowImpl vBphViewRow = (BpHViewRowImpl)bphVo.getCurrentRow();
vBphViewRow.setStatus("A");
2. Do a validation inside setStatus method of the entity :
public void setStatus(String value) {
if (! getCancel() == true )
setAttributeInternal(STATUS, value);
else
throw new JboException("Error ! transaction already cancelled");
3. On backing beans :
public String approveButton_action() {
BindingContainer bindings = getBindings();
OperationBinding operationBinding =
bindings.getOperationBinding("approve");
Object result = operationBinding.execute();
if (!operationBinding.getErrors().isEmpty()) {
System.out.println("There is JBO Error !!");
return null;
else{
commitButton_action();
return "back";
}Try this code:
approveButtonAction() {
String navigationString = null;
try {
Object result = operationBinding.execute();
naviagionString = success;
catch (JboException e) {
navigationString = null;
(DCBindingContainer)bc.cacheException(e);
} finally {
if(navigationString != null)
return commitButtonAction();
else
return navigationString;
} -
How to delete a row from database table in facade client
Hi all,
I followed the tutorial in creating a persistence entity from database table, then a session facade. Then I followed the tutorial to create a sample client to test the model. In the session facade, I could use persistEntity method to insert a record to the database. I am just thinking of an extension to the tutorial, i.e., being able to delete the record too. So I created a new method removeEntity in the session facade
public void removeEntity(Object entity) {
entity=em.merge(entity);
em.remove(entity);
em.flush();
and called it in the sample client. It was executed without any error, but the record in the table still exists.
I tried to look around for a solution, but I did not find one. Would anybody here please help out? Many thanks in advance!Hi Frank,
I tried the code snippet, but I got the following exception when executing this code:
javax.ejb.EJBException: EJB Exception: ; nested exception is:
java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.; nested exception is: java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.
java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.
at weblogic.deployment.BasePersistenceContextProxyImpl.validateInvocation(BasePersistenceContextProxyImpl.java:121)
at weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:86)
at weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:91)
at weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:80)
at weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:26)
at $Proxy141.getTransaction(Unknown Source)
at model.SessionEJBBean.removeEntity(SessionEJBBean.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy143.removeEntity(Unknown Source)
at model.SessionEJB_qxt9um_SessionEJBImpl.removeEntity(SessionEJB_qxt9um_SessionEJBImpl.java:142)
at model.SessionEJB_qxt9um_SessionEJBImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
javax.ejb.EJBException: EJB Exception: ; nested exception is:
java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.; nested exception is: java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:109)
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:91)
at $Proxy0.removeEntity(Unknown Source)
at model.SessionEJBClient.main(SessionEJBClient.java:71)
Caused by: java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.
at weblogic.deployment.BasePersistenceContextProxyImpl.validateInvocation(BasePersistenceContextProxyImpl.java:121)
at weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:86)
at weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:91)
at weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:80)
at weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:26)
at $Proxy141.getTransaction(Unknown Source)
at model.SessionEJBBean.removeEntity(SessionEJBBean.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:55)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy143.removeEntity(Unknown Source)
at model.SessionEJB_qxt9um_SessionEJBImpl.removeEntity(SessionEJB_qxt9um_SessionEJBImpl.java:142)
at model.SessionEJB_qxt9um_SessionEJBImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Process exited with exit code 0. -
How to issue print command from report/form server to client printer on web
1) We have a client server application which is to be deployed on the web environment. The reports generated in our application are having a destination type as File. These reports are printed after applying some print format (escape sequences) which are passed on to the printer programmatically at runtime while printing.
Now when this application is shifted on to the Application server (Forms server & Reports Server )in web environment ,the report outputs would be generated in the application server as against the client in client server environment as the report server is on the application server.
Now while printing/accessing the report the output file will not be available to the client unless it is pushed on to the client side from the server . I am able to see reports in pdf/html output but in this case layout of my reports gets changed and I dont want to change my layouts or reformat my report layouts.
How do I redirect the report output from the application server on to the client within the D2k context and then execute print commands?
Note: In this case we want to use both DMT and Laser printing. Also note that we use escape sequences to adjust reports in desired printing papers.
2) We have second set of reports which we call as document because these are printed after capturing data from 'Form' using text_io utility (please note that for these documents we are not using any Report 6i functionality)and we print it from file using printing mechanism as mentioned above. These are working well in client server application. We adopted this methodology for getting better performance (in terms of speed as database server and network traffic is not involved) of printing. But now we are converting our application for web, we are finding it difficult how to capture Form's data from browser to client's machine and then executing printing commands which are stored in our application liabrary.
If you help me out by giving some suggestions, I shall be grateful to you.
nullHello
I wonder if you ever solved this problem.
I have a very similar problem with Photoshop CS5 on Mac OSX 10.6 + HP Photosmart C7180.
If I choose "Photoshop Manages Colors" the results are lousy.
If I choose "Printer Manages Colors" the results are OK. not necessarily great.
I believe I have all the correct settings after going through books and web advice (and wasted a lot of paper and ink).
As far as I can see, "ColorSync" is the internal Mac management which is the only option available with "Photoshop Manages Colors" and "Vendor Matching" appears to mean the printer vendor (ie HP) will provide the matching. Either can be selected if "Printer Manages Colors" is used. It seems the type of paper can be set in three different places. if That's all a bit academic as the results are poor regardless.
My wife suggests I buy a new printer - Epson's looking good.
Any words of wisdom would be appreciated. -
How do I STOP thunderbird from being the default mail client?
I recently upgraded my version of thunderbird and it has decided it is to be my default email program. This is really annoying. I use thunderbird for 1 email account and all other email accounts are handled by MS Outlook 2010.
How do I tell thunderbird it is NOT the default email program?From the Menu Bar select '''Tools-Options-Advanced-General'''
Under System Integration uncheck the box to always check to see if Thunderbird is the default.
No menu bar? Press the alt key.
Then tell Outlook it is the default. -
How to send a message from server to a particular client
Hi all,
I need to send a message from one host to another host which are connected in local domain. Now I'm able to send a message from client to server and vice versa but what I need is the server should route that message which I send through one client to another host(client) .
How can I do that ?
Please give me some ideas how to do that .
Thanks in advance
Edited by: m.parthiban on Mar 5, 2008 1:20 PMejp, thanks for your reply . can you please explain me bit more by providing code snippet ?
This is what I have done till now :
MyServer:
package connection;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
* @param args
public static void main(String[] args) {
String ss ="",temp ="";
Socket clientLink=null;
try {
ServerSocket sockServer = new ServerSocket(6000);
while(true) {
clientLink = sockServer.accept();
System.out.println("Connection Established");
InputStreamReader isr = new InputStreamReader(clientLink.getInputStream());
BufferedReader bufReader = new BufferedReader(isr);
// System.out.println("buf "+bufReader.readLine());
try {
while ((temp=bufReader.readLine())!=null) {
ss+=temp;
System.out.println("ss "+ss+"Temp "+temp );
System.out.println("Client > "+ss);
} catch (IOException e) {
System.out.println("while reading");
e.printStackTrace();
OutputStreamWriter osw = new OutputStreamWriter(clientLink.getOutputStream());
PrintWriter pw = new PrintWriter(osw,true);
pw.write("Welcome -by Server !!!");
pw.flush();
clientLink.shutdownOutput();
clientLink.close();
} catch (IOException e) {
System.out.println("Can't able to connect");
e.printStackTrace();
}MyClient:
package connection;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JOptionPane;
public class MyClient {
* @param args
public static void main(String[] args) {
try {
String serverMsg="",temp="";
Socket client = new Socket("127.0.0.1",6000);
PrintWriter pw = new PrintWriter(client.getOutputStream(),true);
pw.write("Hi ,Accecpt me");
pw.flush();
// pw.close();
client.shutdownOutput();
InputStreamReader isr = new InputStreamReader(client.getInputStream());
BufferedReader bufRead = new BufferedReader(isr);
while ((temp=bufRead.readLine())!=null) {
serverMsg +=temp;
System.out.println("Server > "+serverMsg);
JOptionPane.showMessageDialog(null, serverMsg);
client.shutdownInput();
client.close();
} catch (IOException e) {
System.out.println("Failed to connect");
e.printStackTrace();
}Once again thanks for the time you spend to reply me. -
Using a ResultSet from an EJB on my client
Hi,
How do i use an ResultSet delivered form my EJB on my Java Client ?
On Sybase EAServer my code looks like this
java.sql.ResultSet rs =
com.sybase.CORBA.jdbc11.SQL.getResultSet(bnoEJBRemote.getForm("X"));
How will it look like using BEA WLS 6.1 ?
Do i have to use dbKona ?
TIA,
BorreHi .
Click here > How to report an issue with Your iTunes Store purchase
And explain that you were charged twice here > Apple - Support - iTunes Store - Contact Us -
How to use jsf2 exception handled
hi,
i'm a new to jsf2
i want to catch the exception from action, and show it on a pop page, or alert the exception message in JS.
but i don't know how to catch the exception from service(like action, ejb), and show it on client(like page or js).
i'm try to user A4J.Ajax.onError (i use jsf 2 and richfaces4), but there is a js error A4J is not defined.
please help~i'm try to user A4J.Ajax.onError (i use jsf 2 and richfaces4), but there is a js error A4J is not defined.Yes so you are doing it wrong and you need to read the manual. Fixing errors is a big part of your job you know, running to a forum the first hitch you get is not going to make you a valuable contribution to the software development market.
http://www.jboss.org/richfaces/docs -
Invoking COM objects from Weblogic EJB
Hi,
I am searching the BEA site on how best to call COM objects from
a EJB deployed in Weblogic. I find rmi over iiop, articles on ObjectBridge
which are confusing. Is there a sample where a COM method is called
from EJB server ( I only see example the other way round)
Thanks,
Harish.http://www.weblogic.com/docs51/examples/com/examples.com.ServerSideDLLClient.html
This shows use the WebLogic COM compiler to generate and RMI wrapper
around a COM DLL and invoking it remotely. Unfortunately, the example
appears to be a little out-of-date (e.g., it is using the old RMI Naming
style of doing the lookup)...
Be forewarned, WebLogic COM is not supported in WebLogic 6.0 (due to the
inavailability of a Microsoft 1.3 JVM implementation).
Harish wrote:
JIntegra is fine, but I want to know if anybody tried WebLogic-COM.
(Is this the right forum?)
Actually I tried out the 'beeper' sample but still have many doubts.
Robert Patrick <[email protected]> wrote:
JIntegra by Linar (http://www.linar.com).
Harish wrote:
Hi,
I am searching the BEA site on how best to call COMobjects from
a EJB deployed in Weblogic. I find rmi over iiop, articleson ObjectBridge
which are confusing. Is there a sample where a COM methodis called
from EJB server ( I only see example the other way round)
Thanks,
Harish. -
How to call a CORBA Object in a 3rd Party ORB from a EJB
Hello
I found a few articles on the web how to call EJBs for example from C++.
However, I want to do the inverse. I want to resolve an Object (implemented in C++, using OmniORB) via COS-Naming and invoke it from a EJB. I can write a simple Java Client which does this without a problem. But as soon as I try to do the same in EJB I get the following:
[#|2004-11-09T10:48:16.848+0100|WARNING|sun-appserver-pe8.0.0_01|javax.enterprise.resource.corba._DEFAULT_.rpc.transport|_ThreadID=12;|"IOP00710209: (INTERNAL) Unable to create listener thread on the specific port"
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 209 completed: No
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.createListenerFailed(ORBUtilSystemException.java:3142)
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.createListenerFailed(ORBUtilSystemException.java:3160)
at com.sun.corba.ee.impl.legacy.connection.SocketFactoryAcceptorImpl.initialize(SocketFactoryAcceptorImpl.java:60)
at com.sun.corba.ee.impl.transport.CorbaTransportManagerImpl.getAcceptors(CorbaTransportManagerImpl.java:190)
at com.sun.corba.ee.impl.transport.CorbaTransportManagerImpl.addToIORTemplate(CorbaTransportManagerImpl.java:207)
at com.sun.corba.ee.spi.oa.ObjectAdapterBase.initializeTemplate(ObjectAdapterBase.java:104)
I think there is somehow a conflict because the SUN Appserver also uses CORBA. My Code looks like this:
String[] a = null;
Properties props = new Properties();
final String CORBA_HOST = "arcos";
final String ORB_INITIAL_PORT = "2809";
props.put("org.omg.CORBA.ORBInitialPort", ORB_INITIAL_PORT);
props.put("org.omg.CORBA.ORBInitialHost", CORBA_HOST);
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(a, props);
So I thought this might be because there is already a ORB initialised. So I replaced the last line with
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
Which should give me an ORB instance. However I get the following exception:
[#|2004-11-09T11:51:59.206+0100|WARNING|sun-appserver-pe8.0.0_01|javax.enterprise.system.stream.err|_ThreadID=15;|
org.omg.CORBA.NO_IMPLEMENT: vmcid: SUN minor code: 201 completed: No
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.genericNoImpl(ORBUtilSystemException.java:7085)
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.genericNoImpl(ORBUtilSystemException.java:7107)
at com.sun.corba.ee.impl.orb.ORBSingleton.resolve_initial_references(ORBSingleton.java:311)
at com.ascom.util.CorbaNaming.resolve(CorbaNaming.java:26)
at com.ascom.fxm.FileManager.<init>(FileManager.java:46)
at com.ascom.srv.file.web.FileImporterImpl.importFile(FileImporterImpl.java:146)
Any ideas? Thank you very much in advance.
Oliver JaunPerhaps you could take a look at the following document and see if it meets your needs:
http://java.sun.com/j2se/1.4.2/docs/guide/rmi-iiop/interop.html -
How do I run a JCA adapter when I am calling it from an EJB?
How do I run a JCA adapter when I am calling it from an EJB? Do I need to create an EJB client and place it in a Client container? If my EJB and JCA adapter are deployed is there a way to call my EJB from the command line?
MikeHi. When you look at the code I provided for you in other thread you will see that connecting to adapter is done through JNDI lookup. The creation of the adapter is done in your J2EE server. Here is some code for you where you can find mapping from code to ejb-jar and orion-ejb-jar.
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
version="2.1">
<!--
This file declares the interface (needs/promises) of the message-driven bean.
The MDB requires:
- a JMS queue (to receive messages from the client),
- a JMS exception queue (to send undeliverable messages back to the source), and
- a connection factory (to communicate with a JMS resource provider).
Note that communication with the resource provider may be (and for this
application is) via a JMS Connector rather than direct.
-->
<display-name>JMS Consume MDB - opp-ifs</display-name>
<enterprise-beans>
<entity>
<description>Entity Bean ( BMP )</description>
<display-name>EBEjbMecomsIFS</display-name>
<ejb-name>EBEjbMecomsIFS</ejb-name>
<local-home>EBEjbMecomsIFSLocalHome</local-home>
<local>EBEjbMecomsIFSLocal</local>
<ejb-class>EBEjbMecomsIFSBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.Long</prim-key-class>
<reentrant>false</reentrant>
<service-ref>
<service-ref-name>service/interceptor</service-ref-name>
<service-interface>javax.xml.rpc.Service</service-interface>
<wsdl-file>META-INF/wsdl/MHS5_Jms_In_RS.wsdl</wsdl-file>
<service-qname xmlns:ns="http://oracle.com/esb/namespaces/PilotOWSM_MustHavesScenario5">ns:ESB_MHS5_Jms_In_RS_Service</service-qname>
</service-ref>
</entity>
<message-driven>
<display-name>JMS Consume MDB - MDB</display-name>
<ejb-name>MDBEjbMecomsIFS</ejb-name>
<!-- name of bean in deployment descriptor (including orion-ejb-jar.xml file) -->
<ejb-class>MDBEjbMecomsIFSBean</ejb-class>
<!-- bean's fully qualified Java class name -->
<messaging-type>javax.jms.MessageListener</messaging-type>
<transaction-type>Container</transaction-type>
<!-- allow incoming messages to be included in transactions -->
<!-- The ejb requires a connection factory to access an external resource (JMS). -->
<ejb-local-ref>
<ejb-ref-name>ejb/local/EBEjbopp_ifs</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>EBEjbMecomsIFSLocalHome</local-home>
<local>EBEjbMecomsIFSLocal</local>
<ejb-link>EBEjbMecomsIFS</ejb-link>
</ejb-local-ref>
<resource-ref>
<!-- The resource's connection factory must be accessible at jndi location "java:comp/env/jms/QueueConnectionFactory". -->
<res-ref-name>jms/QueueConnectionFactory</res-ref-name>
<!-- The resource's connection factory must implement the "javax.jms.ConnectionFactory" interface. -->
<res-type>javax.jms.ConnectionFactory</res-type>
<!-- container managed authorization -->
<res-auth>Container</res-auth>
</resource-ref>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<!--
Declare that a global transaction is required when the onMessage method of the ejb named
"MDBEjbName" is called. This will cause the app server to automatically initiate a
global (XA) transaction before calling onMessage (actually, before even receiving the JMS
message that triggers onMessage) and end the transaction after onMessage returns. The
JMS Connector will automatically rollback the transaction if onMessage throws an
exception. onMessage may also set the transaction to be "rollback only".
Participating in global transactions requires that the connection factory provided in the
activation spec (see the ConnectionFactoryJndiName property earlier in this file) must be
XA-capable (it must implement the javax.jms.XAConnectionFactory interface).
If this declaration is ommitted, then onMethod will not be part of any global
transaction. In that case the connection factory provided in the activation spec must
implement the javax.jms.ConnectionFactory interface.
-->
<container-transaction>
<method>
<ejb-name>MDBEjbMecomsIFS</ejb-name>
<method-name>onMessage</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>EBEjbMecomsIFS</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Supports</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
orion-ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<orion-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNameSpaceSchemaLocation="http://www.oracle.com/technology/oracleas/schema/orion-ejb-jar-10_0.xsd">
<enterprise-beans>
<entity-deployment name="EBEjbMecomsIFS">
<service-ref-mapping name="service/interceptor">
<wsdl-location>http://on-poc62.ontw.alfa.local:7777/event/PilotOWSM/MustHavesScenario5/MHS5_Jms_In_RS?wsdl</wsdl-location>
<service-qname localpart="ESB_MHS5_Jms_In_RS_Service" namespaceURI="http://oracle.com/esb/namespaces/PilotOWSM_MustHavesScenario5"/>
<port-info>
<wsdl-port namespaceURI="http://oracle.com/esb/namespaces/PilotOWSM_MustHavesScenario5"
localpart="__soap_MHS5_Jms_In_RS_execute_ppt"/>
<service-endpoint-interface>javax.xml.rpc.Service</service-endpoint-interface>
<call-property>
<name>javax.xml.rpc.service.endpoint.address</name>
<value>http://on-poc62.ontw.alfa.local:7777/event/PilotOWSM/MustHavesScenario5/MHS5_Jms_In_RS</value>
</call-property>
<call-property>
<name>javax.xml.rpc.soap.http.soapaction.uri</name>
<value>execute</value>
</call-property>
<call-property>
<name>javax.xml.rpc.soap.http.soapaction.use</name>
<value>true</value>
</call-property>
<call-property>
<name>javax.xml.rpc.soap.operation.style</name>
<value>document</value>
</call-property>
<runtime enabled="owsm">
<owsm init-home="/oracle/product/SoaAs/10.1.3/owsm/config/interceptors/C0003002"
init-file="confluent.properties"/>
</runtime>
</port-info>
</service-ref-mapping>
</entity-deployment>
<message-driven-deployment name="MDBEjbMecomsIFS"
resource-adapter="OEMSJMSDRAopp-ifs"
enabled="true" max-instances="10">
<!--
The ejb requires a connection factory implementing the "javax.jms.XAConnectionFactory"
interface to be accessible at jndi location "java:comp/env/jms/QueueConnectionFactory". (see ejb-jar.xml and ....)
A suitable connection factory is already accessible at jndi location "OEMSJMSDRASubcontext/MyXACF" (see oc4j-ra.xml)
-->
<resource-ref-mapping location="OEMSJMSDRASubopp-ifs/MyXACF"
name="jms/QueueConnectionFactory"/>
<!-- don't misspell this or you'll get an RP CF which doesn't work -->
<!-- Required activation-spec properties. -->
<!--
ConnectionFactoryJndiName (string, no default)
This should be the JNDI location of an RA connection factory.
The JMS Connector will use this connection factory to create the JMS
connection it uses to receive messages for this MDB's onMessage. If the
exception queue is enabled (see UseExceptionQueue), the JMS Connector will
also use a connection created from this connection factory for the production
of messages to the exception queue.
This connection factory must be compatible with the message domain(s). (For
example, if the MDB is receiving messages from a queue, the connection
factory should implement javax.jms.[XA]QueueConnectionFactory or
javx.jms.[XA]ConnectionFactory.)
For XA/non-XA considerations, see the <container-transaction> comments later
in this file.
-->
<config-property>
<config-property-name>ConnectionFactoryJndiName</config-property-name>
<config-property-value>OEMSJMSDRASubopp-ifs/MyXAQCF</config-property-value>
</config-property>
<!--
DestinationName (string, no default)
This is JNDI location of the queue or topic from which messages to be
delivered to the MDB's onMessage method should be received.
The JNDI locations for RA destinations are defined in the
oc4j-connectors.xml file.
-->
<config-property>
<config-property-name>DestinationName</config-property-name>
<config-property-value>OEMSJMSDRASubopp-ifs/MyQ</config-property-value>
</config-property>
<!--
DestinationType (string, no default)
This must be set to the type of the destination named by the above
"DestinationName" property.
The EJB 2.1 spec states that this must be set to either javax.jms.Queue or
javax.jms.Topic. OracleGJRA also allows it to be set to
javax.jms.Destination (which works for both queues and topics).
-->
<config-property>
<config-property-name>DestinationType</config-property-name>
<config-property-value>javax.jms.Queue</config-property-value>
</config-property>
<!--
Other activation-spec properties.
The following activation-spec properties supported by OracleGJRA are optional
except where otherwise noted:
-->
<!--
ListenerThreadMaxPollInterval (milliseconds, 5000)
Listener threads "poll" to see if there is a message waiting to be processed.
The more frequently this polling is performed, the faster (on average) a given
listener thread can respond to a new message. The price for frequent polling is
overhead - the resource provider must process a receive request each time it is
polled.
Oracle's JMS Connector implementation applies an adaptive algorithm which
uses shorter polling intervals (high polling rates) during periods of activity
(once activity is noticed) and longer polling intervals (lower polling rates)
during periods of inactivity. The ListenerThreadMaxPollInterval property places
an upper limit on the polling interval used by this adaptive algorithm.
-->
<config-property>
<config-property-name>ListenerThreadMaxPollInterval</config-property-name>
<config-property-value>5000</config-property-value>
</config-property>
<!--
AcknowledgeMode (string, default = Auto-acknowledge)
This should be set to Auto-acknowledge or Dups-ok-acknowledge. This
controls the quality-of-service provided by listener threads which
consume messages and call the MDB's onMessage method.
MessageSelector (string, default = no message filtering)
This is the selector expression used to filter messages sent to the
MDB's onMessage method. (I.e., this is used as the messageSelector for
the JMS sessions created for the listener threads.)
SubscriptionDurability (string, default = NonDurable)
For topics this should be set to Durable or NonDurable. (This should
not be set for queues.) This controls the durability of the topic
consumer used by the listener thread. When SubscriptionDurability is
set to Durable (and DestinationType is javax.jms.Topic or
javax.jms.Destination), the SubscriptionName property is required.
SubscriptionName (string, no default)
This property is required when SubscriptionDurability is Durable (and
DestinationType is javax.jms.Topic or javax.jms.Destination). (In all
other cases it is ignored.) This is the name used when creating the
durable subscriber used by the listener thread. For a given JMS server,
a given subscription name should be assigned to at most one MDB (which
must have most one listener thread).
ClientId (string, no default)
If set, connection(s) used by the listener threads will be set to use
this client ID.
TransactionTimeout (milliseconds, default = 300,000)
This limits the amount of time that the JMS Connector will wait for a
message to arrive before exiting the current transaction. The
transaction manager limits the amount of time a transaction can last
(see transaction-timeout in transaction-manager.xml).
TransactionTimeout should be set such that the transaction manager will
not timeout the transaction during the onMessage routine unless
something is wrong. For example, If the transaction mananager timeout
is set to 30 seconds, and the onMessage routine will never take more
than 10 seconds unless something is wrong, then this property could be
set to 20 seconds (20000 milliseconds).
EndpointFailureRetryInterval (milliseconds, default = 60,000)
If an endpoint can not be processed (due to the app server WorkManager
not accepting new work), it will be scheduled to be retried this many
milliseconds later.
ReceiverThreads (integer, default = 1)
This sets the maximum number of listener threads to create for this
endpoint. For queues, using more than one thread may be useful in
increasing the rate at which messages can be consumed. For topics this
value should always be 1. (Each listener thread gets its own session
and TopicSubscriber. For durable subscribers it would be an error to
have more than one subscriber with the same subscription name. For
nondurable subscribers having more than one thread will not help because
more threads translates into more subscribers which translates into more
copies of each message.) See also: ListenerThreadMinBusyDuration
UseExceptionQueue (boolean, default = false)
When "UseExceptionQueue" is true:
- Messages that would otherwise be discarded are sent to the
exception queue. (Currently the only case where this happens is
when the max delivery count is exceeded. See MaxDeliveryCnt
property.) Rather than sending the original message directly to
the exception queue, the following procedure is used:
o Create a new message of the same type.
o Copy the properties and body from the original message to the
new message.
o If the headers were copied, sending the message to the
exception queue would cause most of them to be lost
(over-written by the resource-provider). So instead,
translate headers in the original to properties in the copy,
assigning each header obtained via "getJMS{Header}" to
property "GJRA_CopyOfJMS{Header}". Since
javax.jms.Destination is not a valid property type, translate
destination headers into descriptive messages.
(Currently this same service is not provided for JMSX*
properties, most notably the JMSXDeliveryCount property.)
o If some part of the copy process (above) or augmentation
process (below) fails, do not abort. Attempt to complete the
rest of the procedure. (For Bytes/Map/Stream message types,
this can mean that part of the body is copied and the rest is
not.)
o If the copy process is 100% successful, add a boolean property
called "GJRA_CopySuccessful" with the value "true".
o Add a string property called "GJRA_DeliveryFailureReason" which
indicates why the message was not delivered.
o If the MDB onMessage method generated an exception immediately
prior to the delivery failure, add a string property called
"GJRA_onMessageExceptions" which contains exception information.
o Send the resulting message to the exception queue.
Note that only one attempt is made to send the message to the
exception queue. Should this attempt fail, the message will
be discarded without being placed in the exception queue.
See IncludeBodiesInExceptionQueue property for potential variations
of the above procedure.
- The ExceptionQueueName property is required.
- In addition to being used for the primary destination, the
connection factory specified by the ConnectionFactoryJndiName
property will also be used for the exception queue. If the primary
destination (specified by the DestinationName property) is a topic,
then the connection factory must support both queues and topics.
(I.e., the <connectionfactory-interface> [see oc4j-ra.xml] for the
given connection factory must be either javax.jms.ConnectionFactory
or javax.jms.XAConnectionFactory.)
ExceptionQueueName (string, no default)
This is the JNDI location of the javax.jms.Queue object to use as the
exception queue. (See UseExceptionQueue property for information about
the use of the exception queue.) This property is required when
UseExceptionQueue is true, and ignored when UseExceptionQueue is false.
IncludeBodiesInExceptionQueue (boolean, default = true)
This controls whether or not messages sent to the exception queue will
include a message body. (See UseExceptionQueue property for information
about the use of the exception queue.) If many messages are sent to the
exception queue during normal operation and the message body is of no
use in the exception queue, then this property may be set false to
improve performance. This property is ignored when UseExceptionQueue is
false. There are two cases where this property does not apply:
- If the original message did not have a message body, then the
message sent to the exception queue will not have one either.
- If a copy of the original message can not be created for any
reason, then the original may be sent to the exception queue
instead. This may result in a message body being sent to the
exception queue.
MaxDeliveryCnt (integer, default = 5)
If a message has the "JMSXDeliveryCount" property and the value of that
property is greater than MaxDeliveryCnt, then the message will be
discarded (and not sent to onMessage). If the exception queue is
enabled (see UseExceptionQueue), a copy of the message will be sent to
the exception queue. If MaxDeliveryCnt is set to 0, no messages will be
discarded. (Note that when an MDB responds to a message by throwing an
exception, the message is not considered delivered and it may be
redelivered. If the MDB might always respond to a given message by
throwing an exception, and MaxDeliveryCnt is set to 0 to prevent the
message from ever being discarded, the result may be an MDB stuck in an
"infinite loop" - failing to process the same message over and over
again.)
-->
<config-property>
<config-property-name>MaxDeliveryCnt</config-property-name>
<config-property-value>0</config-property-value>
</config-property>
<!--
LogLevel (string, no default)
This controls the level of detail of messages logged by the JMS
Connector. These messages are primarily intended for debugging the
JMS Connector itself, but may also be useful when debugging issues
related to the use of the JMS Connector. This property should not be
set in production code. (It should only be set temporarily for
debugging purposes - specific log messages and log levels may be and
will be added/removed/modified in future versions of the JMS
Connector.) Currently the allowed values are:
ConnectionPool
ConnectionOps
TransactionalOps
ListenerThreads
INFO
CONFIG
FINE
FINER
FINEST
SEVERE
WARNING
OFF
ListenerThreadMaxIdleDuration (milliseconds, default = 300,000)
This is how long a listener thread which is not receiving any messages
will be kept around. (At least one listener thread will remain as long
as the endpoint is active.)
ListenerThreadMinBusyDuration (milliseconds, default = 10,000)
If a listener thread has just received a message, has not been idle (had to
wait for a new message to arrive) at any point during the past
ListenerThreadMinBusyDuration milliseconds, and the current number of
listener threads for this endpoint is less than ReceiverThreads, then
(application server willing) an additional listener thread will be created.
ResUser (string, default = null)
ResPassword (string, default = null)
These properties allow a user/password to be passed to the resource
provider. When neither of these properties are set, connections used for
this MDB's inbound message handling (as well as for exception queue
handling, if enabled) are created using the no-argument version of the
create*Connection method. When one or both of these properties are set,
they are passed to the create*Connection method as the user/password
arguments. (If only one property is not set, then 'null' is used for that
particular create*Connection argument.) The ResPassword property supports
the standard password indirection options (e.g., using "->joeuser" to
represent the password of "joeuser").
Note that the commas used in many of the above default values and examples are
included here for readability but can not be used in the actual activation spec.
(I.e., integer/milliseconds values in the activation spec must not include
embedded commas.)
-->
</message-driven-deployment>
</enterprise-beans>
<assembly-descriptor>
<default-method-access>
<security-role-mapping name="<default-ejb-caller-role>"
impliesAll="true"/>
</default-method-access>
</assembly-descriptor>
</orion-ejb-jar>
Maybe you are looking for
-
Highlighter add-on not working in windows 8.1 thunderbird 31.4.0
I installed Highlighter add-on to Thunderbird 31.4.0 with Windows 8.1. If I select text in composition, pull down the Highlighter menu and click on a color, the selected text color does not change. Stays with default. Same result if I just pick a col
-
My iphone 5 imei in the phone OS6 and and what is written in the back mismatch
When i checked SETTINGS/GENERAL/ABOUT it say my: SERIAL: C38JL5C1DTTP IMEI: 013332002695213 and in the back of the iphone and the box IMEI is: 99002807905045 SERIAL is: DNPPG1EFH19 How is that?
-
how do i fix ...... Itunes was unable to load data class information from class sync services? i have windows vista 64 bit itunes 10.5.1. can anyone help me
-
Hi Experts, Is there a way by which I can get a report from SAP on material ageing for a historical date ( say a month back) today. Regards Milind Nair
-
Canot install 1-Step RoboPDF printer: 1930
I am trying to install RoboPDF from the RoboHelp X5 CD and I get the error message of: Canot install 1-Step RoboPDF printer: 1930. I have done the uninstall and reinstall but to no avail. The computer is running Win XP OS. Anyone have any clues?