Showing posts with label EJB. Show all posts
Showing posts with label EJB. Show all posts

Thursday, 18 February 2010

"javax.naming.Name is an interface, and JAXB can't handle interfaces" - Deployment Issues when using Eclipse to Deploy a JavaBean Web Service in to SAP Java AS

Hit an issue today when deploying an Enterprise JavaBen (EJB) web service today via Eclipse. I was exposing the SAP UWL through the UWL API - but it wouldn't deploy. I kept getting the following error in the deployment trace:
[com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
javax.naming.Name is an interface, and JAXB can't handle interfaces.]




Looking at all my @WebMethod annotations, there didn't seem to be any obvious problem:

@WebMethod(operationName="Test", exclude=false)
public int Test() throws UWLException, NamingException
{
IUser user = com.sap.security.api.UMFactory.getAuthenticator().getLoggedInUser();

I examined the Eclipse debug trace to about line 100, I found an issue - that there was a problem with serialization:
Unable to generate serialization framework for web service UWLFacadeService

Turns out the deployment exception was really trying to tell me that "NamingException" is not serializable - and so cannot be surfaced through a Web Service. I changed my method to handle the NamingException errors internally (via try..catching them), and removed the throws statement on the Method. Without the requirement to serialize the exception, the deployment errors for my test EJB web service went away!


......