cancel
Showing results for 
Search instead for 
Did you mean: 

Adapter module problem

Former Member
0 Kudos

Hi gurus,

I'm very new to adapter module.

I tried with the howto guide and I develelop a really sample module just to check if I'm able to write the audit log.

The code is really simple:

/*

  • Created on Jul 11, 2006

*

  • To change the template for this generated file go to

  • Window>Preferences>Java>Code Generation>Code and Comments

*/

package it.elsag.xi.adapter.module;

import javax.ejb.CreateException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

import com.sap.aii.af.mp.module.*;

import com.sap.aii.af.ra.ms.api.*;

import com.sap.aii.af.service.auditlog.Audit;

import com.sap.aii.af.service.auditlog.AuditDirection;

import com.sap.aii.af.service.auditlog.AuditLogStatus;

import com.sap.aii.af.service.auditlog.AuditMessageKey;

/**

  • @ejbHome <{com.sap.aii.af.mp.module.ModuleHome}>

  • @ejbLocal <{com.sap.aii.af.mp.module.ModuleLocal}>

  • @ejbLocalHome <{com.sap.aii.af.mp.module.ModuleLocalHome}>

  • @ejbRemote <{com.sap.aii.af.mp.module.ModuleRemote}>

  • @stateless

*/

public class MyAdapterModule implements SessionBean, Module {

final String auditStr = "*** AFWJavaMap - ";

private SessionContext myContext;

private AuditMessageKey amk = null ;

private ModuleContext mc;

private Object obj = null; // Handler to get Principle data

private Message msg = null; // Handler to get Message object

public void ejbRemove() {

}

public void ejbActivate() {

}

public void ejbPassivate() {

}

public void setSessionContext(SessionContext context) {

myContext = context;

}

public void ejbCreate() throws CreateException {

}

public ModuleData process(

ModuleContext moduleContext,

ModuleData inputModuleData)

throws ModuleException {

obj = inputModuleData.getPrincipalData();

msg = (Message) obj;

if (msg.getMessageDirection() == MessageDirection.INBOUND)

amk = new AuditMessageKey(msg.getMessageId(),

AuditDirection.INBOUND);

else

amk = new AuditMessageKey(msg.getMessageId(),

AuditDirection.OUTBOUND);

Audit.addAuditLogEntry(amk, AuditLogStatus.SUCCESS,

"MyAdapterModule: Module called (mojitodaiquiri)");

return inputModuleData;

}

}

but when I try I get this error (from the visual admin):

[EXCEPTION]

com.sap.engine.services.ejb.exceptions.BaseTransactionRolledbackLocalException: Exception thrown in method process. The transaction is marked for rollback.

at com.sap.aii.af.mp.module.ModuleLocalLocalObjectImpl0.process(ModuleLocalLocalObjectImpl0.java:118)

at com.sap.aii.af.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:252)

at com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0.process(ModuleProcessorLocalLocalObjectImpl0.java:103)

at com.sap.aii.af.listener.AFWListenerBean.onMessage(AFWListenerBean.java:243)

at com.sap.aii.af.listener.AFWListenerLocalObjectImpl0.onMessage(AFWListenerLocalObjectImpl0.java:103)

at com.sap.aii.af.ra.ms.impl.ServicesImpl.deliver(ServicesImpl.java:253)

at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:838)

at com.sap.aii.af.ra.ms.impl.core.queue.ReceiveConsumer.invokeHandler(ReceiveConsumer.java:351)

at com.sap.aii.af.ra.ms.impl.core.queue.ReceiveConsumer.onMessage(ReceiveConsumer.java:100)

at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:831)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

Caused by: java.lang.NullPointerException

at it.elsag.xi.adapter.module.MyAdapterModule.process(MyAdapterModule.java:58)

at com.sap.aii.af.mp.module.ModuleLocalLocalObjectImpl0.process(ModuleLocalLocalObjectImpl0.java:103)

... 13 more

java.lang.NullPointerException

at it.elsag.xi.adapter.module.MyAdapterModule.process(MyAdapterModule.java:58)

at com.sap.aii.af.mp.module.ModuleLocalLocalObjectImpl0.process(ModuleLocalLocalObjectImpl0.java:103)

at com.sap.aii.af.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:252)

at com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0.process(ModuleProcessorLocalLocalObjectImpl0.java:103)

at com.sap.aii.af.listener.AFWListenerBean.onMessage(AFWListenerBean.java:243)

at com.sap.aii.af.listener.AFWListenerLocalObjectImpl0.onMessage(AFWListenerLocalObjectImpl0.java:103)

at com.sap.aii.af.ra.ms.impl.ServicesImpl.deliver(ServicesImpl.java:253)

at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:838)

at com.sap.aii.af.ra.ms.impl.core.queue.ReceiveConsumer.invokeHandler(ReceiveConsumer.java:351)

at com.sap.aii.af.ra.ms.impl.core.queue.ReceiveConsumer.onMessage(ReceiveConsumer.java:100)

at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:831)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)

The line whereI get the error is:

if (msg.getMessageDirection() == MessageDirection.INBOUND)

so I think msg is null.

Can anyone help me? Thank you.

PS. How can I put some trace in the module?

Gianni

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Gianni,

I have a try and catch block around this, so that the msg will be processed, but if msg is really null you have to check if you get principleData.

Which Adapter do you use?

Regards

Philipp

Former Member
0 Kudos

I tried with the mail adapter

Gianni

Former Member
0 Kudos

Do you want to work with the Attachments?

Then take the PayloadSwapBean Module!

Former Member
0 Kudos

I don't have to develop any particular module, I want just to make a test to learn how to do it when and if I'll need it.

Thanks

Gianni

Former Member
0 Kudos

in that case i would suggest you try it with File adapter first. The same code works for me for File adapter.

Former Member
0 Kudos

Ok I'll try

thanks a lot

Gianni

Former Member
0 Kudos

I just have a test with the file adapter and still I have the same problem.

I attach the j2ee-application-engine.xml :

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE application-j2ee-engine SYSTEM "application-j2ee-engine.dtd">

<application-j2ee-engine>

<reference

reference-type="weak">

<reference-target

provider-name="sap.com"

target-type="library">com.sap.aii.af.lib</reference-target>

</reference>

<reference

reference-type="weak">

<reference-target

provider-name="sap.com"

target-type="service">com.sap.aii.adapter.xi.svc</reference-target>

</reference>

<reference

reference-type="hard">

<reference-target

provider-name="sap.com"

target-type="service">com.sap.aii.af.svc</reference-target>

</reference>

<reference

reference-type="hard">

<reference-target

provider-name="sap.com"

target-type="service">com.sap.aii.af.cpa.svc</reference-target>

</reference>

<provider-name>sap.com</provider-name>

<fail-over-enable

mode="disable"/>

<start-up

mode="always"/>

</application-j2ee-engine>

I keep on ask If same angel teach me how to put some trace.

Thanks

Gianni

henrique_pinto
Active Contributor
0 Kudos

> Do you want to work with the Attachments?

>

> Then take the PayloadSwapBean Module!

Is there anyplace to check all the modules that we can use in any of the default adapters?

Thanks,

Henrique.

Former Member
0 Kudos

Gianni,

Did you resolve this issue?, if so could you please post how did you resolve?

Thank you,

Balaji

Former Member
0 Kudos

For which type of adapter you are trying to use this module? what you get in the PrincipalData and supplementaldata depends on the type of adapter.