AQ JMS CLOB Msg
Hi all,
I have a PLSql proc that enqueues A CLOB to an AQJMS (AQ$_JMS_TEXT_MESSAGE) queue succesfully. You can see the data in the USER data section of the message on the queue table. When I try and dequeue it with a standalone java program the msg is dequeued succesfully, msg id is available and the msg disappears off the queue.
BUT!!!! The msg payload is null. We are using the thin driver db is 9.2.5
Has anyone seen this before or got any ideas? If you think we need to use the thick driver please tell use why we get a propblem with OCIHandles..
Many thanks
Stew
Can you elaborate on how to this. My code is as follows:
CREATE OR REPLACE PROCEDURE pr_enqueue_msg (
pi_Operation IN VARCHAR2,
pi_ObjectXML CLOB
Purpose : Procedure to enqueue a message to the AQ table.
IS
enqueue_options DBMS_AQ.enqueue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW (16);
MESSAGE SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
MESSAGE := SYS.AQ$_JMS_TEXT_MESSAGE(NULL, LENGTH(pi_ObjectXML), pi_ObjectXML, NULL);
--MESSAGE.set_text(pi_ObjectXML);
MESSAGE.set_string_property('OPERATION',pi_Operation);
DBMS_AQ.enqueue (queue_name => 'CRAMER.Abraham_Node_AQ',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => MESSAGE,
msgid => message_handle
COMMIT;
END pr_enqueue_msg;
If I enqueue the message with
MESSAGE := SYS.AQ$_JMS_TEXT_MESSAGE(NULL, LENGTH(pi_ObjectXML), pi_ObjectXML, NULL);
I can get use the jms code :
message = (AQjmsTextMessage) receiver.receive(5000);
String str = message.getText()
If, however,
If I enqueue the message with
MESSAGE := SYS.AQ$_JMS_TEXT_MESSAGE(NULL, LENGTH(pi_ObjectXML), NULL, pi_ObjectXML);
(The message is created with a CLOB rather than the VARCHAR)
the the get text returns null.
What java method do I need to use to get the CLOB???
Any help is appreciated.
Jon
Similar Messages
-
Invoke Error while inserting consumed JMS Topic msg in table thru DBadapter
Hi All,
To brief abt my requirement, I am integrating Peoplesoft HRMS module with Oracle SOA i.e.,
+
1. PS HRMS module will publish a JMS msg into a JMS Topic
2. I will consume the same msg using JMS adapter consume operation in my SOA project
3. The Payload(msg) is coming into RECEIVE activity and thru ASSIGN activity invoking the DB adapter to insert the msg into a table.
4. INVOKE activity is throwing the below error(along with the error, able to see the payload in INVOKE activity )
<part name="summary"> +
<summary>*Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: Mapping Not Found Exception. The mapping [EMPLID] for descriptor [class insert.Employee] could not be found. The input xml record had an element [Employee/EMPLID]. Most likely the wrong xml input variable (not matching the expected xsd) was passed to this invoke. Make sure that the input xml is valid relative to the xsd and that the mapping exists in the Mappings.xml. If an old version of the descriptor without this mapping has been loaded by the database adapter, you may need to bounce the app server. If the same descriptor is described in two separate Mappings.xml files, make sure both versions include this attribute/mapping. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. *</summary>
</part>
Please, provide some suggestions.
Regards,
SatyaHi Satya,
Try replacing the Assign activity with a Transform acitivity.
Also please check the schema that comes of the DB adapter is having the similar sort of definition that you are getting in your input.
What I mean is to check for length of fields, type of the fields etc.
Thanks,
Deepak.
Edited by: DeepakDabbiru on Oct 23, 2012 3:29 AM -
JMS Text Msg Payload - Oracle 8i
I am using Oracle8i Enterprise Edition Release 8.1.7.4.0 for creating a queue uisng Oracle AQ with payload type
SYS.AQ$_JMS_TEXT_MESSAGE. When I tried create a queue, I found some of components in SYS.AQ$_JMS_TEXT_MESSAGE are missing in Oracle 8i. Without those components usage, the message cannot set as payload in the queue. The explanation is as below.
My script for creation of queue is as follows..
CREATE OR REPLACE PROCEDURE NCR_ESB_NOL_SCRIPT(order_clob_load in CLOB)
IS
qtable_present number;
queue_present number;
enqopt dbms_aq.enqueue_options_t;
msgprop dbms_aq.message_properties_t;
enq_msgid raw(10000);
order_headers_clob clob;
msgsize number(38);
message sys.aq$_jms_text_message;
clob_msg_queuetable varchar2(100);
clob_msg_queue varchar2(100);
BEGIN
-- Queue table and queue
clob_msg_queuetable := 'TEST_QTAB';
clob_msg_queue := 'TEST_Q';
order_headers_clob := order_clob_load;
--create queue table
select count(*) into qtable_present from user_tables where table_name = 'TEST_QTAB';
if (qtable_present <> 1)
then
dbms_aqadm.create_queue_table(queue_table => clob_msg_queuetable,
multiple_consumers => TRUE,
queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE',
compatible => '8.1');
end if;
--create queue
select count(*) into queue_present from user_queues where name = 'TEST_Q';
if (queue_present <> 1)
then
dbms_aqadm.create_queue(queue_name=>clob_msg_queue,
queue_table => clob_msg_queuetable,
retention_time => 86400);
dbms_aqadm.add_subscriber(clob_msg_queue, SYS.AQ$_AGENT ('OA', NULL, NULL));
end if;
dbms_aqadm.start_queue(clob_msg_queue);
message := sys.aq$_jms_text_message.construct;
message.setText(order_headers_clob);
dbms_aq.enqueue(
queue_name => clob_msg_queue, -- IN
enqueue_options => enqopt, -- IN
message_properties => msgprop, -- IN
payload => message, -- IN
msgid => enq_msgid); -- OUT
COMMIT;
When I tried the above script, I got error as follows.
PL/SQL: Statement ignored
PLS-00302: component 'CONSTRUCT' must be declared
PL/SQL: Statement ignored
PLS-00302: component 'SETTEXT' must be declared
When I tried DESC SYS.AQ$_JMS_TEXT_MESSAGE , it shows as :
SQL> DESC SYS.AQ$_JMS_TEXT_MESSAGE
Name Null? Type
HEADER AQ$_JMS_HEADER
TEXT_LEN NUMBER(38)
TEXT_VC VARCHAR2(4000)
TEXT_LOB CLOB
It does not show the components CONSTRUCT and SET_TEXT. Also I will be in need of GET_TEXT component also to dequeue the queue data and test it. I would like to know whether the components CONSTRUCT and SET_TEXT are availble in Oracle 8i or not. Without those components, is there any other way to set payload in the queue?
Help in this regard from any body who knows about this is really appreciated.
ThanksHi, not sure where you have sorted this out yet, but I ended up creating my own wrappers. Hope these are of use:
FUNCTION new_properties
RETURN SYS.AQ$_JMS_USERPROPARRAY
IS
l_prop_arr SYS.AQ$_JMS_USERPROPARRAY;
BEGIN
l_prop_arr := SYS.AQ$_JMS_USERPROPARRAY();
RETURN l_prop_arr;
END new_properties;
FUNCTION new_agent
RETURN SYS.AQ$_AGENT
IS
c_name CONSTANT VARCHAR2(30) := NULL;
c_address CONSTANT VARCHAR2(100) := NULL;
c_protocol CONSTANT NUMBER := 0;
l_agent SYS.AQ$_AGENT;
BEGIN
l_agent := SYS.AQ$_AGENT(c_name, c_address, c_protocol);
RETURN l_agent;
END new_agent;
FUNCTION new_header
RETURN SYS.AQ$_JMS_HEADER
IS
c_type CONSTANT VARCHAR2(100) := NULL;
c_jms_userid CONSTANT VARCHAR2(100) := 'waveq';
c_appid CONSTANT VARCHAR2(100) := NULL;
c_groupid CONSTANT VARCHAR2(100) := NULL;
c_groupseq CONSTANT INTEGER := 1;
l_replyto SYS.AQ$_AGENT;
l_proparr SYS.AQ$_JMS_USERPROPARRAY;
l_jms_header SYS.AQ$_JMS_HEADER;
BEGIN
l_replyto := new_agent();
l_proparr := new_properties();
l_jms_header := SYS.AQ$_JMS_HEADER(l_replyto, c_type, c_jms_userid, c_appid, c_groupid, c_groupseq, l_proparr);
RETURN l_jms_header;
END new_header;
FUNCTION new_payload(
io_message IN OUT NOCOPY VARCHAR2)
RETURN SYS.AQ$_JMS_TEXT_MESSAGE
IS
c_text_len CONSTANT INTEGER := 0;
c_text_vc CONSTANT VARCHAR2(4000) := NULL;
c_text_lob CONSTANT CLOB := EMPTY_CLOB();
l_header SYS.AQ$_JMS_HEADER;
l_jms_message SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
l_header := new_header();
l_jms_message := SYS.AQ$_JMS_TEXT_MESSAGE(l_header, c_text_len, c_text_vc, c_text_lob);
l_jms_message.text_vc := io_message;
l_jms_message.text_len := LENGTH(io_message);
RETURN l_jms_message;
END new_payload; -
Problem to send a message with JMS
Hi
I'm doing some tests with the api JMS to know how works. I have got some problems. I have been looking for some information but i don't find so much. I have got too doubts.
I am usinng Netbeans 5.5 with Sun Java System Application Server Platform Edition 9.0_01 (build b14).
I am trying to do it with ejb. Because in the future the application can have got so many connection in the same time.
The server shows me the next errors.
Starting Sun Java System Application Server Platform Edition 9.0_01 (build b14) ...
CORE5098: AS Socket Service Initialization has been completed.
CORE5076: Using [Java HotSpot(TM) Client VM, Version 1.6.0_03] from [Sun Microsystems Inc.]
SEC1002: Security Manager is OFF.
ADM0001:MBeanServer initialized successfully
SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.
sgmt.service_initialized
DPL5400:Exception occurred : error in opening zip file.
ADM1079: Initialization of AMX MBeans successful
ADM1504: Here is the JMXServiceURL for the Standard JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://t1:8686/jmxrmi]. This is where the remote administrative clients should connect using the standard JMX connectors
ADM1506: Status of Standard JMX Connector: Active = [true]
JTS5014: Recoverable JTS instance, serverId = [3700]
About to load the system app: MEjbApp
LDR5010: All ejb(s) of [MEjbApp] loaded successfully!
About to load the system app: __ejb_container_timer_app
EJB5109:EJB Timer Service started successfully for datasource [jdbc/__TimerPool]
LDR5010: All ejb(s) of [__ejb_container_timer_app] loaded successfully!
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
appId=Chat-ejb moduleName=Chat-ejb ejbName=publicarBean
LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:485)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:2628)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:629)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:163)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:515)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:490)
at com.sun.enterprise.server.EJBModuleLoader.load(EJBModuleLoader.java:158)
at com.sun.enterprise.server.AbstractManager.load(AbstractManager.java:206)
at com.sun.enterprise.server.ApplicationLifecycle.onStartup(ApplicationLifecycle.java:198)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:326)
at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:112)
at com.sun.enterprise.server.PEMain.run(PEMain.java:326)
at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
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.sun.enterprise.server.PELaunch.main(PELaunch.java:272)
Caused by: javax.naming.NameNotFoundException
at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:255)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:178)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:98)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:469)
... 17 more
CORE5021: Application NOT loaded: [Chat-ejb]
WEB0302: Starting Sun-Java-System/Application-Server.
WEB0100: Loading web module [__default-admingui] in virtual server [__asadmin] at [/]
WEB0100: Loading web module [adminapp] in virtual server [__asadmin] at [/web1]
WEB0100: Loading web module [admingui] in virtual server [__asadmin] at [/asadmin]
WEB0100: Loading web module [amserver] in virtual server [server] at [/amserver]
Initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context ''
Completed initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context ''
Initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context '/asadmin'
Completed initializing Sun's JavaServer Faces implementation (1.2_02-b03-FCS) for context '/asadmin'
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8080
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4848
About to load the system app: __JWSappclients
WEB0100: Loading web module [__JWSappclients:sys.war] in virtual server [server] at [/__JWSappclients]
Using MQ RA for Broker lifecycle control
JMS Service Connection URL is :mq://t1:7676/
MQJMSRA_RA1101: SJSMQ JMS Resource Adapter starting...
EB-start:brokerProps={imq.instancename=imqbroker, imq.jmx.rmiregistry.port=8686, BrokerArgs=-port 7676 -name imqbroker -imqhome D:\Sun\AppServer\imq\bin\.. -varhome D:/sun/AppServer/domains/domain1\imq -useRmiRegistry -rmiRegistryPort 8686, imq.jmx.rmiregistry.use=true, imq.portmapper.port=7676}
[07/nov/2007:18:35:03 CET]
================================================================================
Sun Java(tm) System Message Queue 4.0
Sun Microsystems, Inc.
Version: 4.0 (Build 27-a)
Compile: Thu 03/02/2006
Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
This product includes code licensed from RSA Data Security.
================================================================================
Java Runtime: 1.6.0_03 Sun Microsystems Inc. D:\sun\Java\jdk1.6.0_03\jre
[07/nov/2007:18:35:03 CET] IMQ_HOME=D:\sun\AppServer\imq
[07/nov/2007:18:35:03 CET] IMQ_VARHOME=D:\sun\AppServer\domains\domain1\imq
[07/nov/2007:18:35:03 CET] Windows XP 5.1 x86 t1 (1 cpu) pepepc
[07/nov/2007:18:35:03 CET] Java Heap Size: max=506816k, current=46944k
[07/nov/2007:18:35:03 CET] Arguments: -port 7676 -name imqbroker -imqhome D:\Sun\AppServer\imq\bin\.. -varhome D:/sun/AppServer/domains/domain1\imq -useRmiRegistry -rmiRegistryPort 8686
[07/nov/2007:18:35:04 CET] [B1060]: Loading persistent data...
[07/nov/2007:18:35:04 CET] Using built-in file-based persistent store: D:\sun\AppServer\domains\domain1\imq\instances\imqbroker\
[07/nov/2007:18:35:04 CET] [B1189]: Cluster Service feature is not available
[07/nov/2007:18:35:04 CET] [B1039]: Broker "imqbroker@t1:7676" ready.
MQJMSRA_EB1101: run:EMBEDDED broker started with code =0
MQJMSRA_RA1101: SJSMQ JMS ResourceAdaapter configuration=
raUID =null
brokerType =EMBEDDED
brokerInstanceName =imqbroker
brokerBindAddress =null
brokerPort =7676
brokerHomeDir =D:\Sun\AppServer\imq\bin\..
brokerVarDir =D:/sun/AppServer/domains/domain1\imq
brokerJavaDir =D:/sun/Java/jdk1.6.0_03
brokerArgs =null
brokerStartTimeout =60000
adminUsername =admin
adminPassFile =E:\tempWin\asmq21980.tmp
useJNDIRmiServiceURL =true
rmiRegistryPort =8686
startRmiRegistry =false
useSSLJMXConnector =true
brokerEnableHA =false
clusterId =null
brokerId =null
jmxServiceURL =null
dbType =null
dbProps ={}
dsProps ={}
ConnectionURL =
UserName =guest
ReconnectEnabled =true
ReconnectInterval =5000
ReconnectAttempts =3
AddressListBehavior =RANDOM
AddressListIterations =3
InAppClientContainer =false
InClusteredContainer =false
GroupName =null
MQJMSRA_RA1101: start:SJSMQ JMSRA Connection Factory Config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=false, imqConnectionFlowCount=100, imqAddressListBehavior=PRIORITY, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=localhost:7676, imqOverrideJMSHeadersToTemporaryDestinations=false}
MQJMSRA_RA1101: SJSMQ JMSRA Started
endpoint.determine.destinationtype
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
appId=Chat moduleName=Chat-ejb_jar ejbName=publicarBean
LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:485)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:2628)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:629)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:163)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:515)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:490)
at com.sun.enterprise.server.ApplicationLoader.load(ApplicationLoader.java:184)
at com.sun.enterprise.server.TomcatApplicationLoader.load(TomcatApplicationLoader.java:113)
at com.sun.enterprise.server.AbstractManager.load(AbstractManager.java:206)
at com.sun.enterprise.server.ApplicationLifecycle.onStartup(ApplicationLifecycle.java:204)
at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:326)
at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:112)
at com.sun.enterprise.server.PEMain.run(PEMain.java:326)
at com.sun.enterprise.server.PEMain.main(PEMain.java:260)
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.sun.enterprise.server.PELaunch.main(PELaunch.java:272)
Caused by: javax.naming.NameNotFoundException
at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:255)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:178)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:98)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:469)
... 18 more
Registering ad hoc servlet: WebPathPath: context root = "/Chat", path = "/Chat-app-client'
Java Web Start services started for application com.sun.enterprise.appclient.jws.ApplicationContentOrigin@aabc2d registration name=Chat
[email protected]56b4 registration name=Chat, context root=/Chat/Chat-app-client, module name=
, parent=Chat
CORE5021: Application NOT loaded: [Chat]
SMGT0007: Self Management Rules service is enabled
Application server startup complete.
JBISE6013: JavaEEServiceEngine : Java EE Service Engine started successfully.
CORE5024: EJB module [Chat-ejb] unloaded successfully!
DeployedItemRef postDeregistration failed. Load Balancer Monitoring MBeans might be lying around if this application is being load balanced
BPEL service engine started
ADM1064:The upload file at [E:\tempWin\s1astempdomain1server-162970426\Chat-ejb.jar] exists and will be overwritten.
ADM1006:Uploading the file to:[E:\tempWin\s1astempdomain1server-162970426\Chat-ejb.jar]
deployed with moduleid = Chat-ejb
ADM1041:Sent the event to instance:[ModuleDeployEvent -- enable ejb/Chat-ejb]
endpoint.determine.destinationtype
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
appId=Chat-ejb moduleName=D__sun_AppServer_domains_domain1_applications_j2ee-modules_Chat-ejb ejbName=publicarBean
LDR5004: UnExpected error occured while creating ejb container
javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:485)
at com.sun.ejb.containers.BaseContainer.setupEnvironment(BaseContainer.java:2628)
at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:629)
at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:163)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:515)
at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:490)
at com.sun.enterprise.server.EJBModuleLoader.load(EJBModuleLoader.java:158)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(StandAloneEJBModulesManager.java:219)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(StandAloneEJBModulesManager.java:174)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleDeployed(StandAloneEJBModulesManager.java:406)
at com.sun.enterprise.server.StandAloneEJBModulesManager.moduleEnabled(StandAloneEJBModulesManager.java:500)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:960)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:941)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:448)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:160)
at com.sun.enterprise.admin.server.core.AdminNotificationHelper.sendNotification(AdminNotificationHelper.java:128)
at com.sun.enterprise.admin.server.core.ConfigInterceptor.postInvoke(ConfigInterceptor.java:109)
at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:97)
at $Proxy1.invoke(Unknown Source)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:297)
at com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call(InvokeCaller.java:56)
at com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle(MBeanServerRequestHandler.java:142)
at com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.processRequest(RemoteJmxConnectorServlet.java:109)
at com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.doPost(RemoteJmxConnectorServlet.java:180)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:174)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:216)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:184)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:276)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
Caused by: javax.naming.NameNotFoundException
at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:255)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:178)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:61)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:98)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:309)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:469)
... 54 more
CORE5020: Error while loading ejb module
{code}
I know it is very large. I think the error it is in this line.
{code}
NAM0008 : Invalid Destination: jndi/Topic for java:comp/env/jms/Topic
EJB5090: Exception in creating EJB container [javax.naming.NamingException [Root exception is javax.naming.NameNotFoundException]]
{code}
also I am going to put the code.
file PublicarBean.java
{code}
package org.pepes;
import com.sun.tools.ws.processor.model.java.JavaArrayType;
import javax.annotation.Resource;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.jms.ConnectionFactory;
import javax.jms.QueueConnectionFactory;
import javax.jms.Topic;
import javax.naming.NamingException;
* @author pepes
@Stateless(mappedName="ejb/publicar")
public class publicarBean implements org.pepes.publicarRemote {
/** Creates a new instance of publicarBean */
@Resource(name="jms/QueueConnectionFactory")
private QueueConnectionFactory connectionFactory;
@Resource(name="jms/Topic", mappedName="jndi/Topic")
private Topic topic;
private javax.naming.InitialContext ctx;
public publicarBean() {
public void creaMensaje() throws javax.naming.NamingException , javax.jms.JMSException {
try {
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
this.connectionFactory = (javax.jms.QueueConnectionFactory)ctx.lookup("jms/QueueConnectionFactory");
this.topic = (javax.jms.Topic)ctx.lookup("jms/Topic");
javax.jms.Connection connection = this.connectionFactory.createConnection();
javax.jms.TopicSession ts = (javax.jms.TopicSession)connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
javax.jms.TopicPublisher tp = ts.createPublisher(this.topic);
javax.jms.TextMessage msg = ts.createTextMessage();
for (int i = 0; i<3;i++) {
msg.setText("Prueba: " + i);
tp.publish(msg);
catch (javax.jms.JMSException jmex) {
throw jmex;
{code}
the file publicarRemote.java
{code}
package org.pepes;
import javax.ejb.Remote;
* This is the business interface for publicar enterprise bean.
@Remote
public interface publicarRemote {
public void creaMensaje() throws javax.naming.NamingException , javax.jms.JMSException;
{code}
file mensaje.java
{code}
package org.pepes;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
* Entity class Mensaje
* @author pepes
@MessageDriven(mappedName = "jms/Mensaje", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
public class Mensaje implements MessageListener {
/** Creates a new instance of Mensaje */
@Resource
private MessageDrivenContext mdc;
public Mensaje() {
public void onMessage(Message message) {
javax.jms.TextMessage msg = null;
try {
if (message instanceof javax.jms.TextMessage) {
msg = (javax.jms.TextMessage) message;
System.out.println(msg.getText());
} else {
System.out.println("Message of wrong type: "
+ message.getClass().getName());
} catch (javax.jms.JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
} catch (Throwable te) {
te.printStackTrace();
{code}
the file prueba.jsp
{code}
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%--
The taglib directive below imports the JSTL library. If you uncomment it,
you must also add the JSTL library to the project. The Add Library... action
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
--%>
<%--
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
--%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>JSP Page</h1>
<%--
This example uses JSTL, uncomment the taglib directive above.
To test, display the page like this: index.jsp?sayHello=true&name=Murphy
--%>
<%--
<c:if test="${param.sayHello}">
<!-- Let's welcome the user ${param.name} -->
Hello ${param.name}!
</c:if>
--%>
<%
try {
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
org.pepes.publicarRemote publisher = (org.pepes.publicarRemote)ctx.lookup("ejb/publicar");
if (publisher==null) {
System.out.println("INFO: Es null");
else {
System.out.println("INFO: No es null");
publisher.creaMensaje();
} catch (javax.naming.NamingException ex) {
System.out.println("ERROR naming: " + ex.getMessage());
catch (javax.jms.JMSException jmex) {
System.out.println("ERROR jms: " + jmex.getMessage());
catch (java.lang.NullPointerException nullex) {
System.out.println("ERROR null: " + nullex.getMessage());
%>
</body>
</html>
{code}
I think the problem is because i don't put destination address. if it is so, the true where do I put this address?. if not where is the problem?
I hope your help.
Thanks you in advanced.Hi,
Did you create your destinations in your application server? It seems that the destinations such as topics and queues are not created. First you should create them and then start using them.
For example, in here, it says that jndi/Topic is not valid. To check if the destinations are valid or not; you can do it either through the graphical user interface or the command line console. -
JMS EBCDIC BytesMessage Problem
We are using the strict JMS API to send message to MQ which will kick off an IMS transaction. We are connecting to IMS using the OTMA bridge. We are trying to send a BytesMessage which kicks off the transaction successfully and a BytesMessage is returmed to our local queue with the resulting message String from IMS transaction. When we go to pull the
We get a garbage message along the lines of:
�����������@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....
AppServer: Linux box running WAS 5.1
Mainframe: z/OS box
Does anybody know what needs to be set before the message is sent and what needs to be done after we get the message in order for us to get the message string into a UTF format that isn't garbled?
// setting the following JMS props
msg.setStringProperty("JMS_IBM_Format", "MQIMSVS");
msg.setStringProperty("JMS_IBM_Character_Set", "819");
// pulling out the message body
BytesMessage bymRecv = (BytesMessage)recv.receive(5000);
// retrieve the message body
byte msgInBytes[];
ByteArrayOutputStream bout;
int lenRead;
msgInBytes = new byte[100];
lenRead = bymRecv.readBytes(msgInBytes, 100);
bout = new ByteArrayOutputStream();
bout.write(msgInBytes, 0, lenRead);
outputString = bout.toString("CP1047"); // not sure if this is right
Or, if we are doing this completely wrong, does anybody have any suggestions.
Thanks!Above problem could be resolved.
1. The problem only occured when sending a message within a transaction. Without transaction everything worked fine.
2. Due to this strange behaviour we assumed that this is a bug - and it was. This bug has the issue nummer: 5331629. In version 10.1.3.1.0 this issue is resolved. We tested it and indeed it worked as excpected. -
TransactionRolledbackLocalException in JMS messaging application
Hi, I have a message driven bean (MDB) that gives the following error and I'm unable to resolve it. Any help would be appreciated. Thanks.
[1/18/06 15:17:44:977 PST] 7d9913e7 SystemOut O Exception occurred inside AppLogMDBean: java.lang.NullPointerException
[1/18/06 15:17:44:986 PST] 7d9913e7 ServerSession W WMSG0031E: Exception processing JMS Message for MDB AppLogReceiverMDB, JMS
Destination jms/appLogQueue : javax.ejb.TransactionRolledbackLocalException: ; nested exception is: com.ibm.ws.exception.WsEJ
BException
com.ibm.ws.exception.WsEJBException
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java(Compiled Code))
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException(LocalExceptionMappingStrat
egy.java(Compiled Code))
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
javax.ejb.TransactionRolledbackLocalException: ; nested exception is: com.ibm.ws.exception.WsEJBException
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSIException(LocalExceptionMappingStrategy.java(Compiled Cod
e))
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java(Compiled Code))
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException(LocalExceptionMappingStrat
egy.java(Compiled Code))
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
this is the code for the onMessage function of the bean
public void onMessage(javax.jms.Message msg)
int executeStatus = -1;
Connection con = null;
DataSource ds = null;
String dataSourceName = null;
PreparedStatement stmt = null;
MapMessage mapMessage = null;
String sqlStatement = null;
Properties properties;
CommonPropertiesHelper propertyHelper;
try{
mapMessage = (MapMessage)msg;
propertyHelper = CommonPropertiesHelper.getInstance("EGOVJournal.properties");
properties = propertyHelper.getProperties();
sqlStatement = properties.getProperty("INSERT_VIRR052U_APP_LOG");
dataSourceName = properties.getProperty("DATA_SOURCE");
if ( (sqlStatement != null) && (dataSourceName != null)){
UserTransaction transaction = fMessageDrivenCtx.getUserTransaction();
transaction.begin();
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
ds = (javax.sql.DataSource) ctx.lookup(dataSourceName);
con = ds.getConnection();
if (con != null){
int x = 1;
stmt = con.prepareStatement(sqlStatement);
String logId = mapMessage.getString("LOG_ID");
if (logId.length() > 40)
logId = logId.substring(0,39);
String jnlId = mapMessage.getString("JOURNAL_ID");
if (jnlId.length() > 40)
jnlId = jnlId.substring(0,39);
String appName = mapMessage.getString("APPLICATION_NAME");
if (appName.length() > 30)
appName = appName.substring(0,29);
String logLevel = mapMessage.getString("LOGGING_LEVEL");
if (logLevel.length() > 2)
logLevel = logLevel.substring(0,1);
String msgName = mapMessage.getString("MESSAGE_NAME");
if(msgName.length() > 100)
msgName = msgName.substring(0,99);
String msgDesc = mapMessage.getString("MESSAGE_DESCRIPTION");
if (msgDesc.length() > 1800)
msgDesc = msgDesc.substring(0,1799);
stmt.setObject(x,logId);
x++;
stmt.setObject(x,jnlId);
x++;
stmt.setObject(x,appName);
x++;
stmt.setObject(x,logLevel);
x++;
stmt.setObject(x,msgName);
x++;
stmt.setObject(x,msgDesc);
x++;
// Execute the Prepared Statement
executeStatus = stmt.executeUpdate();
stmt.close();
con.close();
transaction.commit();
else{
System.out.println("Connection is null inside AppLogMDBean");
else{
System.out.println("Either sql or dataSource is null inside AppLogMDBean. Can't continue.");
catch(NamingException e){
System.out.println("NamingException occurred inside AppLogMDBean: " + e);
catch(JMSException e){
System.out.println("JMSException occurred inside AppLogMDBean: " + e);
catch(Exception e){
System.out.println("Exception occurred inside AppLogMDBean: " + e);
finally{
try{
if(stmt!=null){
stmt.close();
stmt = null;
if(con != null){
con.close();
con = null;
catch(Exception e){
System.out.println("Exception occurred inside AppLogMDBean in finally block : " + e);
}Hi, I have a message driven bean (MDB) that gives the following error and I'm unable to resolve it. Any help would be appreciated. Thanks.
[1/18/06 15:17:44:977 PST] 7d9913e7 SystemOut O Exception occurred inside AppLogMDBean: java.lang.NullPointerException
[1/18/06 15:17:44:986 PST] 7d9913e7 ServerSession W WMSG0031E: Exception processing JMS Message for MDB AppLogReceiverMDB, JMS
Destination jms/appLogQueue : javax.ejb.TransactionRolledbackLocalException: ; nested exception is: com.ibm.ws.exception.WsEJ
BException
com.ibm.ws.exception.WsEJBException
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java(Compiled Code))
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException(LocalExceptionMappingStrat
egy.java(Compiled Code))
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
javax.ejb.TransactionRolledbackLocalException: ; nested exception is: com.ibm.ws.exception.WsEJBException
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSIException(LocalExceptionMappingStrategy.java(Compiled Cod
e))
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java(Compiled Code))
at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException(LocalExceptionMappingStrat
egy.java(Compiled Code))
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java(Compiled Code))
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
this is the code for the onMessage function of the bean
public void onMessage(javax.jms.Message msg)
int executeStatus = -1;
Connection con = null;
DataSource ds = null;
String dataSourceName = null;
PreparedStatement stmt = null;
MapMessage mapMessage = null;
String sqlStatement = null;
Properties properties;
CommonPropertiesHelper propertyHelper;
try{
mapMessage = (MapMessage)msg;
propertyHelper = CommonPropertiesHelper.getInstance("EGOVJournal.properties");
properties = propertyHelper.getProperties();
sqlStatement = properties.getProperty("INSERT_VIRR052U_APP_LOG");
dataSourceName = properties.getProperty("DATA_SOURCE");
if ( (sqlStatement != null) && (dataSourceName != null)){
UserTransaction transaction = fMessageDrivenCtx.getUserTransaction();
transaction.begin();
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
ds = (javax.sql.DataSource) ctx.lookup(dataSourceName);
con = ds.getConnection();
if (con != null){
int x = 1;
stmt = con.prepareStatement(sqlStatement);
String logId = mapMessage.getString("LOG_ID");
if (logId.length() > 40)
logId = logId.substring(0,39);
String jnlId = mapMessage.getString("JOURNAL_ID");
if (jnlId.length() > 40)
jnlId = jnlId.substring(0,39);
String appName = mapMessage.getString("APPLICATION_NAME");
if (appName.length() > 30)
appName = appName.substring(0,29);
String logLevel = mapMessage.getString("LOGGING_LEVEL");
if (logLevel.length() > 2)
logLevel = logLevel.substring(0,1);
String msgName = mapMessage.getString("MESSAGE_NAME");
if(msgName.length() > 100)
msgName = msgName.substring(0,99);
String msgDesc = mapMessage.getString("MESSAGE_DESCRIPTION");
if (msgDesc.length() > 1800)
msgDesc = msgDesc.substring(0,1799);
stmt.setObject(x,logId);
x++;
stmt.setObject(x,jnlId);
x++;
stmt.setObject(x,appName);
x++;
stmt.setObject(x,logLevel);
x++;
stmt.setObject(x,msgName);
x++;
stmt.setObject(x,msgDesc);
x++;
// Execute the Prepared Statement
executeStatus = stmt.executeUpdate();
stmt.close();
con.close();
transaction.commit();
else{
System.out.println("Connection is null inside AppLogMDBean");
else{
System.out.println("Either sql or dataSource is null inside AppLogMDBean. Can't continue.");
catch(NamingException e){
System.out.println("NamingException occurred inside AppLogMDBean: " + e);
catch(JMSException e){
System.out.println("JMSException occurred inside AppLogMDBean: " + e);
catch(Exception e){
System.out.println("Exception occurred inside AppLogMDBean: " + e);
finally{
try{
if(stmt!=null){
stmt.close();
stmt = null;
if(con != null){
con.close();
con = null;
catch(Exception e){
System.out.println("Exception occurred inside AppLogMDBean in finally block : " + e);
} -
Issue with MDB (jms Queue) in weblogic 8.1
Hi all...
I'm facing a strange kind of problem with MDB using weblogic 8.1.
The code worked perfectly in weblogic 7.0.
This is wht i'm trying to achieve..
i'm having a MDB which implements a onMessage().
I'm publishing message thru a standalone client. Publishing works fine..
The problem is onMessage(javax.jms.Message msg) is never been called :-(.
when i monitor it shows that messages are recieved..
Am is missing something that is really important..
here is my code
package com.csxwt.zodiac.service.domain;
import javax.ejb.*;
import javax.jms.*;
import javax.naming.*;
import java.io.Serializable;
//import com.csxwt.zodiac.service.domain.TestObject;
public class MDBTestBean implements MessageDrivenBean, MessageListener {
MessageDrivenContext messageDrivenContext;
public void ejbCreate() throws CreateException {
System.out.println("into the ejb create");
/**@todo Complete this method*/
public void ejbRemove() {
/**@todo Complete this method*/
public void onMessage(javax.jms.Message msg) {
System.out.println("into the onMessage method 1 ");
ObjectMessage objectMsg = null;
String strObject = "Test";
try
System.out.println("into the onMessage method 2 ");
if (msg instanceof ObjectMessage)
System.out.println("into the onMessage method 3");
objectMsg = (ObjectMessage) msg;
Serializable serializableObj = objectMsg.getObject();
String test = serializableObj.toString();
System.out.println("value of the message sent " + test);
TestObject test1 = null;
if(serializableObj instanceof TestObject )
test1 = (TestObject) serializableObj;
System.out.println("after getting the test value ");
System.out.println("getting the test object valuye " + test1.getName());
else
return;
catch (Exception e)
System.out.println("Message Bean:unexpected Exception thrown ");
e.printStackTrace();
public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext)
System.out.println("into MDB context");
this.messageDrivenContext = messageDrivenContext;
here are the 2 xml files....
<ejb-jar>
<enterprise-beans>
<message-driven>
<display-name>MDBTest</display-name>
<ejb-name>MDBTest</ejb-name>
<ejb-class>com.csxwt.zodiac.service.domain.MDBTestBean</ejb-class>
<transaction-type>Container</transaction-type>
<message-selector>GATE_LANE</message-selector>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MDBTest</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>MDBTest</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>200</max-beans-in-free-pool>
<initial-beans-in-free-pool>20</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>zodiac.jms.queue.HardWareOutMessageQueue</destination-jndi-name>
</message-driven-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
Am i missing something somewhere?????
any help in this is highly appreciated..
thanks in advance.
r
sasi
Check your log for error and warning messages. If there
are some, they should help trace down the problem. If there
aren't any, try confirm that your MDB is deploying in
the first place.
The MDB below is a Q MDB, but you write below that your client
is a "publisher". "Publisher" implies a topic producer, not
a queue producer, and topic producer can't publish to queues.
Tom
T. Sasii Dharma wrote:
> Hi all...
>
> I'm facing a strange kind of problem with MDB using weblogic 8.1.
> The code worked perfectly in weblogic 7.0.
> This is wht i'm trying to achieve..
> i'm having a MDB which implements a onMessage().
> I'm publishing message thru a standalone client. Publishing works fine..
> The problem is onMessage(javax.jms.Message msg) is never been called :-(.
> when i monitor it shows that messages are recieved..
> Am is missing something that is really important..
>
> here is my code
>
> package com.csxwt.zodiac.service.domain;
>
> import javax.ejb.*;
> import javax.jms.*;
> import javax.naming.*;
> import java.io.Serializable;
> //import com.csxwt.zodiac.service.domain.TestObject;
>
> public class MDBTestBean implements MessageDrivenBean, MessageListener {
> MessageDrivenContext messageDrivenContext;
> public void ejbCreate() throws CreateException {
> System.out.println("into the ejb create");
> /**@todo Complete this method*/
> }
> public void ejbRemove() {
> /**@todo Complete this method*/
> }
> public void onMessage(javax.jms.Message msg) {
> System.out.println("into the onMessage method 1 ");
> ObjectMessage objectMsg = null;
> String strObject = "Test";
> try
> {
> System.out.println("into the onMessage method 2 ");
> if (msg instanceof ObjectMessage)
> {
> System.out.println("into the onMessage method 3");
> objectMsg = (ObjectMessage) msg;
> Serializable serializableObj = objectMsg.getObject();
> String test = serializableObj.toString();
> System.out.println("value of the message sent " + test);
> TestObject test1 = null;
> if(serializableObj instanceof TestObject )
> {
> test1 = (TestObject) serializableObj;
> System.out.println("after getting the test value ");
> System.out.println("getting the test object valuye " + test1.getName());
> }
>
> }
> else
> {
> return;
> }
>
> }
> catch (Exception e)
> {
> System.out.println("Message Bean:unexpected Exception thrown ");
> e.printStackTrace();
> }
>
> }
> public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext)
> {
> System.out.println("into MDB context");
>
> this.messageDrivenContext = messageDrivenContext;
> }
> }
>
>
> here are the 2 xml files....
>
> <ejb-jar>
> <enterprise-beans>
> <message-driven>
> <display-name>MDBTest</display-name>
> <ejb-name>MDBTest</ejb-name>
> <ejb-class>com.csxwt.zodiac.service.domain.MDBTestBean</ejb-class>
> <transaction-type>Container</transaction-type>
> <message-selector>GATE_LANE</message-selector>
> <message-driven-destination>
> <destination-type>javax.jms.Queue</destination-type>
> </message-driven-destination>
> </message-driven>
> </enterprise-beans>
> <assembly-descriptor>
> <container-transaction>
> <method>
> <ejb-name>MDBTest</ejb-name>
> <method-name>*</method-name>
> </method>
> <trans-attribute>Required</trans-attribute>
> </container-transaction>
> </assembly-descriptor>
> </ejb-jar>
>
> <weblogic-ejb-jar>
> <weblogic-enterprise-bean>
> <ejb-name>MDBTest</ejb-name>
> <message-driven-descriptor>
> <pool>
> <max-beans-in-free-pool>200</max-beans-in-free-pool>
> <initial-beans-in-free-pool>20</initial-beans-in-free-pool>
> </pool>
> <destination-jndi-name>zodiac.jms.queue.HardWareOutMessageQueue</destination-jndi-name>
> </message-driven-descriptor>
> </weblogic-enterprise-bean>
> </weblogic-ejb-jar>
>
> Am i missing something somewhere?????
> any help in this is highly appreciated..
>
> thanks in advance.
>
> r
> sasi
-
XML Element to string conversion returning null
Hi,
When i try to convert XML Element to string using toString() API, it returns something like [device: null] where device is element tag.
Code is as follows -
Document xmlDoc;
DOMParser parser = (DOMParser)Class.forName("org.apache.xerces.parsers.DOMParser").newInstance();
parser.setFeature( "http://apache.org/xml/features/dom/defer-node-expansion", true );
parser.parse(new InputSource(new StringReader(tableStr)));
xmlDoc = parser.getDocument();
Element root = xmlDoc.getDocumentElement();
NodeList nodeList = root.getElementsByTagName("device");
Element deviceNode = (Element)nodeList.item(nodeList.getLength()-1);
System.out.println(deviceNode.toString()); //prints [device: null] ????
System.out.println(deviceNode.getAttribute("ipAddress")); //prints correct ip address
Any idea why i am getting [device: null] when trying to convert Element to String though attribute value is retrieved.
Thanks,
DeepakHello ,
I want to get the root node (<ZTOP60_XML_TAG_STRUCTURE>
) of the following xml file .
<?xml version="1.0" encoding="utf-8"?>
<ZTOP60_XML_TAG_STRUCTURE>
<MSGTYPE>NAPOBACK</MSGTYPE>
<SNDPRN>657393485</SNDPRN>
<RECEIVER/>
<RCVPRN>GSOHUBDM1</RCVPRN>
<PONUM/>
<VENDCODE>0020040266</VENDCODE>
<VENDUNS>002601768</VENDUNS>
<PARTNERFUNC_WE>WE</PARTNERFUNC_WE>
<PARTNERNUM_WE>C240</PARTNERNUM_WE>
<LINE_ITEMS>
<item>
<ITEMNUM>00687</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>7.000</GRQTY>
<NETVAL>339.65</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FE-26865-01</MATNUM>
<MATDESC>PTR, T632, LEXMARK 5-BIN MAILBOX</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00178</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>303.000</GRQTY>
<NETVAL>18.62</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FE-ZZYRG-01</MATNUM>
<MATDESC>FDD,FDI-PC,1.44MB,3.5 ,HH</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00157</ITEMNUM>
<POQTY>999999998.000</POQTY>
<BOQTY>24.000</BOQTY>
<GRQTY>303.000</GRQTY>
<NETVAL>26.25</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FE-25094-01</MATNUM>
<MATDESC>MOUSE,PC,3BUT,,INTELLIMOUSE,PS2</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00881</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>62.000</GRQTY>
<NETVAL>368.80</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FD-66515-01</MATNUM>
<MATDESC>ITU MODULE ASM</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00223</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>377.000</GRQTY>
<NETVAL>459.28</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FD-65336-01</MATNUM>
<MATDESC>MAIN SYSTEM BOARD T23 (2647)</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00081</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>19.000</BOQTY>
<GRQTY>810.000</GRQTY>
<NETVAL>217.21</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FD-64199-01</MATNUM>
<MATDESC>QST- CADET 100</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00271</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>136.000</GRQTY>
<NETVAL>813.76</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>FD-60065-01</MATNUM>
<MATDESC>SMART UPS 3000VA RM</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00791</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>3.000</GRQTY>
<NETVAL>201.73</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>3X-PBXGG-AA</MATNUM>
<MATDESC>ATI 7500 PCI GRAPHICS</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00173</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>32.000</GRQTY>
<NETVAL>7.50</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>12-56178-01</MATNUM>
<MATDESC>CARD GUIDE,SNAP-IN,LOW PROFILE,2.5 INCHE</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00309</ITEMNUM>
<POQTY>999999998.000</POQTY>
<BOQTY>15.000</BOQTY>
<GRQTY>71.000</GRQTY>
<NETVAL>51.23</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>30-51476-01</MATNUM>
<MATDESC>VHDI-CABLE WIDE 12 FT. DT-AB001-TQ</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
<item>
<ITEMNUM>00194</ITEMNUM>
<POQTY>999999999.000</POQTY>
<BOQTY>1.000</BOQTY>
<GRQTY>147.000</GRQTY>
<NETVAL>345.48</NETVAL>
<PLANT>C240</PLANT>
<MATNUM>29-33689-01</MATNUM>
<MATDESC>PTR,IMP9,B/W,PAR/SER,110/240,R</MATDESC>
<PONUMBER>6500022388</PONUMBER>
<EKGRP>U17</EKGRP>
<DISPO>N07</DISPO>
</item>
</LINE_ITEMS>
</ZTOP60_XML_TAG_STRUCTURE>
I wrote the following lines of code ..
FTI .. >> String strMsg =((javax.jms.TextMessage)msg).getText();
StrMsg is a string that represents an xml file .
DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docfactory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(strMsg)));
Element root = doc.getDocumentElement();
System.out.println("The root is " + root);
String strFileName = root+".xml" ;
System.out.println("The file name is " + strFileName);
File f = new File (strFileName);
FileOutputStream fos = new FileOutputStream( f );
for ( int j =0 ; j < strMsg.length(); j++)
char c = strMsg.charAt(j);
fos.write((int)c);
I am getting the following error ...
The root is [ZTOP60_XML_TAG_STRUCTURE: null]
The file name is [ZTOP60_XML_TAG_STRUCTURE: null].xml
Whey the file name or root is with special character [ ] and null ..
I want just ZTOP60_XML_TAG_STRUCTURE.xml .
Can anyone help me .
thanks
mahesh -
Message properties and performance
Hi
Our application uses BytesMessage - but we add some userdefined properties in
the message header area- all string properties. The number of properties that
we add is around 5-6 and am trying my best to reduce that somehow. Wondering whether
the number of proerties would matter or is it like black or white? Also if I end
up with a screwed up design just to reduce 1 or 2 properties out of 5/6 - id it
really worth it? Also wondering if there is any way that an MDB instance knows
which Queue the message came from if the message itself does not contain any user
defined property like "queuename" put by the producer.
thanks
Anamitra
One more thing to consider outside of performance
- message header and property fields do not get paged out.
This becomes a factor when there
are a large number of messages on the server
and at the same time message properties are
fairly large in comparison to message header information.
Tom Barnes wrote:
> Hi,
>
> Anamitra wrote:
>
>> Hi
>> Our application uses BytesMessage - but we add some userdefined
>> properties in
>> the message header area- all string properties. The number of
>> properties that
>> we add is around 5-6 and am trying my best to reduce that somehow.
>> Wondering whether
>> the number of proerties would matter or is it like black or white?
>> Also if I end
>> up with a screwed up design just to reduce 1 or 2 properties out of
>> 5/6 - id it
>> really worth it?
>
>
> Likely not worth it.
>
> Its not the number Strings so much as the size of
> the Strings that matters.
>
> The perf gain is likely not measurable except
> for high throughput non-persistent messaging (rates
> of 1000 msgs/sec higher) with "small" (few hundred
> byte) message bodies and Strings greater than 25
> characters in length. Of course, these are
> very rough estimates - say plus/minus 75%, with
> measured perf gains at 5% or more.
>
>> Also wondering if there is any way that an MDB instance knows
>> which Queue the message came from if the message itself does not
>> contain any user
>> defined property like "queuename" put by the producer.
>
>
> javax.jms.Destination dest = ((javax.jms.Message)msg).getJMSDestination();
>
> // get JMX mbean name of destination
> String name =
> ((javax.jms.Queue)dest_.getName();
>
>
>>
>> thanks
>> Anamitra
>
>
-
Dear @all, I had in past two links to check all available ports smply by requesting two urls like http://hostname.domain.de:8000/sap/public/icf_info/icr_groups; but for J2EE and ABAP ports...
I'm interested to find out quickly the JMS and MSG Server Ports and Instance ports... could you help me pls to find out?thx, but unfortunately this is not was I mean... not for XI engine, I search the info pages for general NW systems...
if 50110 page is empty; how I have to interprete this?
I found one of them:
ABAP message server list:
http://hostname.domain.de:8101/msgserver/text/logon?version=1.2
http://help.sap.com/saphelp_nwpi711/helpdata/en/67/f2a88355de4690a429a25ef83c89b2/content.htm
OK, and it is the same for J2EE ...
thx for your help
Edited by: René Schulz on Feb 3, 2010 3:50 PM -
Q<WWO-13> What are the difference between WLS6.1 and WLS7.0 web services?
A<WWO-13> The differences are huge, so different in fact that 6.1 web services cannot
be deployed in 7.0. WLS7.0 and Workshop have much greater functionality than the
limited stateless session (RPC-style) and JMS destination (MSG-style) approach of
6.1. Workshop web services can interact with any type of EJB, any JMS destination
as well as other web services and directly accessing databases. The framework for
building the web service is better and more adaptable and Workshop provides a fully
integrated develop, deploy, test and debug environment. Additionally, WLS7.0 have
the capacity to be much better at performance since due to XML parser enhancements
and the addition of XML maps.If you want to take existing WLS6.1 web services and convert them to WLS7.0 you can
do so quite easily. The WLS7.0 Ant still supports wsgen so you do not need to even
change your build.xml file. The generated web service however will be implemented
is a manner compliant with the WLS7.0 environment. More details are at:
http://e-docs.bea.com/wls/docs70/webServices/anttasks.html#1070576
"Adam FitzGerald" <[email protected]> wrote:
>
Q<WWO-13> What are the difference between WLS6.1 and WLS7.0 web services?
A<WWO-13> The differences are huge, so different in fact that 6.1 web services
cannot
be deployed in 7.0. WLS7.0 and Workshop have much greater functionality
than the
limited stateless session (RPC-style) and JMS destination (MSG-style) approach
of
6.1. Workshop web services can interact with any type of EJB, any JMS destination
as well as other web services and directly accessing databases. The framework
for
building the web service is better and more adaptable and Workshop provides
a fully
integrated develop, deploy, test and debug environment. Additionally, WLS7.0
have
the capacity to be much better at performance since due to XML parser enhancements
and the addition of XML maps. -
how can I get the return value "response" from the below code (sessionbean)
public String execute(String msg){
try {
String response;
System.out.println("Input msg" + msg);
ValdatDealer validatedealer = new ValdatDealer();
response = validatedealer.checkDealer(msg);
System.out.println( "response message" +response);
return response;
into this following bean's onMessage method (message driven bean)
public void onMessage(javax.jms.Message msg) {
if (msg instanceof TextMessage) {
try {
System.out.println("Invoking MDB onMessage() now.");
String reqMsg = new String (((TextMessage)msg).getText());
InitialContext initCtx = new InitialContext();
DriverValidateHome home =
(DriverValidateHome) initCtx.lookup("java:comp/env/ejb/DriverValidate");
PortableRemoteObject.narrow(home, DriverValidateHome.class);
System.out.println( "CreditAppMDB, onMessage(): Delegate business requirement to Session Bean");
DriverValidate validate = home.create();
validate.execute(reqMsg);
please help..Message driven bean don't have a client...So anything exceuting within the onMessage will not be returned to the client.
-
Sending Msg From HTTP client to XI through JMS Adapter using WebSphereMQ
Hello
I am trying to send some msg from Http client
I configured JMS adapter as receiver
Transport Protocol :WEBsphereMQ JMS provider
Message protocol :JMS1.x
I have given the Ip address of my machine where I installed WEB Sphere MQ
Server Port :1416
Transport Protocol :WebSphere MQ
JMS compliant: JMS-compliant
In SXMB_MONI
Http client sends message without any error.
But while tracing I got message
<Trace level="1" type="T">Async barrier reached. Bye-bye !</Trace>
Can anybody tell me the solution..
ThnaksHi,
I have not directly faced this but i may suggest ,
1. What do you see in sxmb_moni, do you have a queue problem?
2. see this File-to-File Scenario Stopped Working the reply from Shravan and the last message.
<i>The XBTO que was the problem. I deleted all LUWs in it and now new transactions are working again</i>
3. You may also use this /people/sap.user72/blog/2005/11/29/xi-how-to-re-process-failed-xi-messages-automatically
Regards,
Anirban. -
How to replace/Change the JMS MSG ID in MQ using JMS Receiver Adapter
Hi Experts,
I am working on File to JMS Scenario,
My Requirement i need to chnage the JMS Message ID(not XI Msg ID) Value with My custoimer specific Value,
How can i achieve this??
any valuable inputs welcome,
Thanks advance,
RajThanks for your reaply,we can change the value of XI MSG ID using Dynamic Configuration,
Then set the XI MSG ID and then make use of the correlation settings
From the help section:
Correlation Settings
Define the correlation settings.
· Set JMSCorrelationID To:
¡ XI Message ID (MessageID) (default value)
¡ XI Reference ID (RefToMessageID)
¡ XI Conversation ID (ConversationID)
¡ No Value
But cant we directly make use of the ASMA to configure DCJMSCorrelationID?
Regards,
Abhishek. -
Create and Handle empty msg in JMS receiver Adapter
Hi,
In my interface scenario, I will have to create a msg output if certain conditions are met and should not create a msg if otherwise..
I am using a Graphical Mapping and the receiver is JMS. I have some questions..
1. Using Graphical mapping, Can I create an empty msg - If I dont map the root node if the conditions are not met, what happens to the msg during runtime ?? Will it create empty payload and does it error out as there is empty payload ??
2. Like File adapter - is there a way to Ignore empty msg in JMS receiver adapter - so that it doesnt write any empty msgs i nthe queue..
Any ideas/suggestions/experiences greatly appreciated please...
Thank you
Thanujja..Natesa,
My bet. I am sorry I am wrong.
One thing comes to my mind is you can do a multi mapping. So if it is ok then send to one receiver and if it exception then send as flat file which you dont use.
Here since only one mapping is going to execute and the other going to fail you can write your own message exception in mapping stating "Its a know error". This is because if it is in produciton if this fails then it creates an alert. So just to tell to the end users it is ok you are populating the generic error. I know its not a good solution, but a work around kind of thing.
Regards,
---Satish
Maybe you are looking for
-
HOW TO SET-UP AN EMAIL ON N81-3 (N81)Anyone can gu...
Hi to all.. Anyone can guide me how to set-up an email for N81? Should I have an Yahoo Plus email account? I'm really appriciated to all members to guide me on this.
-
A few months ago I migrated from an iBook G4 w/Tiger to a MBP, and installed Leopard. I did a custom install, leaving out printer drivers, extra fonts and additional languages. Since I began using this MBP, whenever I repair permissions I get a long
-
Can mac book air run final cut
thinking of purchasing 13 inch Macbook air. Will it run finalcut ?
-
Profit centre in line iteam not found
Hi Guru, While doing posting, given below error is coming.. Balancing field "Profit Center" in line item 003 not filled Kindly advice to solved this issue. Regards, Sharma
-
Missing "Start Page" Tab.
I accidentally closed the "Start Page" tab in OWB 11g Design Center. How do I get the "Start Page" tab to open when I launch Design Center? Thanks. Dan