Hi All ,
I have been strictly told not to use Web Services as all the applications are on the same server
actually I have to make an EJB invocation to an Application Service from the CAF layer from a Session Bean of another EJB Project(Not a CAF Service).
the CAF layer has 5 parts metadata , permissions , dictionary , ear and ejbmodule.
I added the ejbModule to the Build Path of the calling EJB Session Bean. And so I was able to access the operations of the Application Service which in turn accesses a BAPI(The Appl Service operation returns a String).
But while executing I got the exception java.lang.RuntimeException: java.lang.NoClassDefFoundError
My method :
Normally from a Dynamic Web Project acting as a client to an EJB Session bean, I was able to get access to EJB Local Interface by using
private ConverterLocal converterBean = null;
public void jspInit() {
try {
InitialContext ic = new InitialContext();
converterBean = (ConverterLocal)
ic.lookup("java:comp/env/Converter");
} catch (Exception ex) {
System.out.println("Couldn't create converter bean."+
ex.getMessage());
}
}
.
.
.
BigDecimal dollarAmount = converterBean.euroToDollar(value);
So I created a JNDI field in ejb-j2ee-engine.xml
enterprise-beans>
<enterprise-bean>
<ejb-name>com.sap*******.bapi_company_getlist.BAPI_COMPANY_GETLIST</ejb-name>
<jndi-name>COMPANY</jndi-name>
</enterprise-bean>
</enterprise-beans>
And from my Session Bean , I tried to access it using the code in already existing Bean which was working fine
BAPI_COMPANY_GETLISTBeanImpl bean = new BAPI_COMPANY_GETLISTBeanImpl();
try {
InitialContext ctx = new InitialContext();
bean = (BAPI_COMPANY_GETLISTBeanImpl)ctx.lookup("COMPANY");
} catch (NamingException e) {
System.out.println("Converter Bean can't be created");
}
String send = bean.returnDetails();
And I tried to print the String , but I got the above error
I have a doubt :
1) How do I specify the JNDI name ie in the ejb-j2ee-engine.xml file , what should I add as the name of the ejb
is this sufficient , or are there more steps ??