cancel
Showing results for 
Search instead for 
Did you mean: 

Error while deploying a message driven bean

Former Member
0 Kudos

I am deployeing a MDB which is done successfully but the message is not retrieved(No message in teh queue). The following description is given in the log file.

#1.5#0016E6197593004B0000000B000013040004288DE20D6CD8#1170489754872#com.sap.security.core.policy.PolicyInfoManagerImpl##com.sap.security.core.policy.PolicyInfoManagerImpl.copyApplicationConfiguration#Administrator#523####e5dbec01b35c11db90e70016e6197593#SAPEngine_Application_Thread[impl:3]_39##0#0#Error#1#/System/Security/WS/SecurityProtocol#Java###An error occured while copying configurations for application . Reason: #3#sap.com/MessageEAR#com.sap.engine.frame.core.configuration.NameNotFoundException#A configuration with the path "webservices/services/sap.com/MessageEAR" does not exist.#

Can you please tell where to look for it and what to do?

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

HI Shilpa,

Have You Configured the Administrative objects in Visual Administrator.

if so send me the code that you have used in Session and messafge driven bean

With Regards

Naidu

former_member187702
Active Participant
0 Kudos

the session bean is ::

public class SenderBean implements SessionBean {

public static final boolean DEBUG = false;

private SessionContext ctx;

private TopicConnectionFactory factory;

private TopicConnection connection;

private Topic topic;

public SenderBean() {

log("constructor");

}

public void ejbCreateSender() throws CreateException {

log("ejbCreate");

try {

InitialContext naming = new InitialContext();

factory = (TopicConnectionFactory)naming.lookup("jmsfactory/default/ExceptionTopicFactory");

topic = (Topic)naming.lookup("jmstopics/default/ExceptionTopic");

log("factory: " + factory);

allocateResources();

} catch (Exception exc) {

log("exception occured during ejbCreate().");

throw new CreateException("Unexpected exception in ejbCreate().");

}

}

public void ejbCreate() throws CreateException {

}

public void ejbActivate() {

log("ejbActivate");

try {

allocateResources();

} catch (Exception exc) {

exc.printStackTrace();

}

}

public void ejbPassivate() {

log("ejbPassivate");

try {

releaseResources();

} catch (Exception exc) {

exc.printStackTrace();

}

}

public void ejbRemove() {

log("ejbRemove");

}

public void setSessionContext(SessionContext _ctx) {

log("setSessionContext");

ctx = _ctx;

}

public void sendMessage(String text) throws MessageNotSentException {

log("sendMessage");

log("text = " + text);

TopicSession session = null;

try {

session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

log("topic = " + topic);

TopicPublisher publisher = session.createPublisher(topic);

TextMessage textMessage = session.createTextMessage();

textMessage.setText(text);

publisher.publish(textMessage);

System.out.println("Message Sent");

log("message sent");

} catch (JMSException jmse) {

jmse.printStackTrace();

throw new MessageNotSentException(jmse.toString());

} finally {

try {

if (session != null) {

session.close();

}

} catch (Exception exc) {

}

}

}

private void releaseResources() throws JMSException {

connection.close();

connection = null;

}

private void allocateResources() throws JMSException {

connection = factory.createTopicConnection();

log("connection = " + connection);

connection.start();

log("connection started");

}

private void log(String message) {

if (DEBUG) {

System.out.println("SenderBean: " + message);

}

}

}

-


the mdb is::

public class MessageDisplayBean implements MessageDrivenBean, MessageListener {

public static final boolean DEBUG = false;

private MessageDrivenContext ctx;

private QueueConnectionFactory factory;

private QueueConnection connection;

private Queue queue;

public MessageDisplayBean() {

System.out.println("In constructor");

log("constructor");

}

public void onMessage(Message message) {

TextMessage textMessage = (TextMessage)message;

try {

String text = textMessage.getText();

log("message received. Text follows:\n\n " + text + "\n\n");

connection = factory.createQueueConnection();

connection.start();

QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

TextMessage confirmation = session.createTextMessage();

confirmation.setText("Message \""+ textMessage.getText() + "\" received.");

//queue = session.createQueue("ConfirmationQueue");

QueueSender sender = session.createSender(queue);

sender.send(confirmation);

session.close();

connection.close();

System.out.println("Message received");

} catch (javax.jms.JMSException jmse) {

}

}

public void ejbRemove() {

log("ejbRemove()");

}

public void setMessageDrivenContext(MessageDrivenContext _ctx) {

log("setMessageDrivenContext()");

ctx = _ctx;

System.out.println("In context");

}

public void ejbCreate() {

try {

System.out.println("In ejbcreate");

InitialContext naming = new InitialContext();

factory = (QueueConnectionFactory)naming.lookup("jmsfactory/default/ExceptionQueueFactory");

queue = (Queue)naming.lookup("jmsqueues/default/ExceptionQueue");

log("factory: " + factory);

} catch (Exception exc) {

log("exception occured during ejbCreate().");

}

log("ejbCreate()");

}

private void log(String str) {

if (DEBUG) {

System.out.println("MessageDisplayBean: " + str);

}

}

}

-


th ejb-j2ee-engine.xml is::

<ejb-j2ee-engine>

<enterprise-beans>

<enterprise-bean>

<ejb-name>MessageDisplayBean</ejb-name>

<jndi-name>MessageDisplayBean</jndi-name>

<message-props>

<destination-name>ExceptionTopic</destination-name>

<connection-factory-name>ExceptionTopicFactory</connection-factory-name>

</message-props>

</enterprise-bean>

<enterprise-bean>

<ejb-name>MessageSender</ejb-name>

<jndi-name>MessageSender</jndi-name>

<session-props/>

</enterprise-bean>

</enterprise-beans>

</ejb-j2ee-engine>

-


the ejb-jar.xml is::

<ejb-jar>

<display-name> Message Driver Bean Example </display-name>

<enterprise-beans>

<session>

<display-name> MessageSender </display-name>

<ejb-name>MessageSender</ejb-name>

<home>com.sap.message.sender.SenderHome</home>

<remote>com.sap.message.sender.Sender</remote>

<local-home>com.sap.message.sender.SenderLocalHome</local-home>

<local>com.sap.message.sender.SenderLocal</local>

<ejb-class>com.sap.message.sender.SenderBean</ejb-class>

<session-type>Stateful</session-type>

<transaction-type>Container</transaction-type>

<ejb-local-ref>

<ejb-ref-name>ejb/SenderBean</ejb-ref-name>

<ejb-ref-type>Session</ejb-ref-type>

<local-home>com.sap.message.sender.SenderLocalHome</local-home>

<local>com.sap.message.sender.SenderLocal</local>

<ejb-link>MyEJB.jar#MessageSender</ejb-link>

</ejb-local-ref>

<resource-ref>

<res-ref-name>ExceptionTopicFactory</res-ref-name>

<res-type>javax.jms.TopicConnectionFactory</res-type>

<res-auth> Container</res-auth>

</resource-ref>

<resource-env-ref>

<resource-env-ref-name>ExceptionTopic </resource-env-ref-name>

<resource-env-ref-type> javax.jms.Topic </resource-env-ref-type>

</resource-env-ref>

</session>

<message-driven>

<ejb-name>MessageDisplayBean</ejb-name>

<ejb-class>com.sap.message.mdb.MessageDisplayBean</ejb-class>

<transaction-type>Container</transaction-type>

<message-driven-destination>

<destination-type>javax.jms.Topic</destination-type>

</message-driven-destination>

<resource-ref>

<res-ref-name> ExceptionQueueFactory </res-ref-name>

<res-type> javax.jms.QueueConnectionFactory </res-type>

<res-auth> Container </res-auth>

</resource-ref>

<resource-env-ref>

<resource-env-ref-name> ExceptionQueue </resource-env-ref-name>

<resource-env-ref-type> javax.jms.Queue </resource-env-ref-type>

</resource-env-ref>

</message-driven>

</enterprise-beans>

<assembly-descriptor>

<container-transaction>

<method>

<ejb-name>MessageDisplayBean</ejb-name>

<method-name>onMessage</method-name>

</method>

<trans-attribute> NotSupported </trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>

former_member187702
Active Participant
0 Kudos

Hi Balaram

Is there some problem with the code/configuration.

If so please tell me

Former Member
0 Kudos

Hi Shilpa,

Have u created Administrative objects for queue and message factory.

just check it

With Regards

Naidu

former_member187702
Active Participant
0 Kudos

Yes Balaram , I hav created all the administratiive objects and referred to them in jms-factories.xml and jms-destination.xml. I have put certain printn statements in session and mdb to know the flow. From which I can get that the session bean is called but the message driven bean is not being called not even the constructor.