Creating a PL/SQL based webservice with a XMLType in/out parameter (EBS 12.1.1)

· updated

Out of the box can we not create a webservice that have a parameter (in or out) of type XMLType using SOA Gateway. When the service is called you will get an error.

In-parameter:

Error Description:  Error occured while service was being generated.
Error Details:  oracle.apps.fnd.soa.util.SOAException: ServiceGenerationError: Exception returned from JCA Service Runtime.

    Missing class: oracle.xdb.XMLType

  Dependent class: oracle.tip.adapter.db.sp.oracle.TypeConverter
           Loader: AppsSOAAdapter:0.0.0
      Code-Source: /u02/oracle/VISION2/apps/tech_st/10.1.3/j2ee/oafm/connectors/AppsSOAAdapter/AppsSOAAdapter/DBAdapter.jar
    Configuration:  in /u02/oracle/VISION2/apps/tech_st/10.1.3/j2ee/oafm/connectors/AppsSOAAdapter/AppsSOAAdapter

The missing class is available from the following locations:

  1. Code-Source: /u02/oracle/VISION2/apps/tech_st/10.1.3/rdbms/jlib/xdb.jar (from  in /u02/oracle/VISION2/apps/apps_st/comn/webapps/oafm/)
     This code-source is available in loader oafm.root:0.0.0.

  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.invoke(JCAHandler.java:222)
  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.handleRequest(JCAHandler.java:153)
  at oracle.apps.fnd.soa.provider.SOAProvider.processMessage(SOAProvider.java:295)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:956)
  at oracle.j2ee.ws.server.WebServiceProcessor$1.run(WebServiceProcessor.java:358)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAs(Subject.java:396)
  at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:355)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:466)
  at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:114)
  at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:96)
  at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:194)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
  at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
  at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
  at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
  at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
  at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313)
  at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199)
  at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
  at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
  at java.lang.Thread.run(Thread.java:619)
oracle.apps.fnd.soa.util.SOAException: ServiceGenerationError: Exception returned from JCA Service Runtime.

    Missing class: oracle.xdb.XMLType

  Dependent class: oracle.tip.adapter.db.sp.oracle.TypeConverter
           Loader: AppsSOAAdapter:0.0.0
      Code-Source: /u02/oracle/VISION2/apps/tech_st/10.1.3/j2ee/oafm/connectors/AppsSOAAdapter/AppsSOAAdapter/DBAdapter.jar
    Configuration:  in /u02/oracle/VISION2/apps/tech_st/10.1.3/j2ee/oafm/connectors/AppsSOAAdapter/AppsSOAAdapter

The missing class is available from the following locations:

  1. Code-Source: /u02/oracle/VISION2/apps/tech_st/10.1.3/rdbms/jlib/xdb.jar (from  in /u02/oracle/VISION2/apps/apps_st/comn/webapps/oafm/)
     This code-source is available in loader oafm.root:0.0.0.

  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.invoke(JCAHandler.java:222)
  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.handleRequest(JCAHandler.java:153)
  at oracle.apps.fnd.soa.provider.SOAProvider.processMessage(SOAProvider.java:295)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:956)
  at oracle.j2ee.ws.server.WebServiceProcessor$1.run(WebServiceProcessor.java:358)
  at java.security.AccessController.doPrivileged(Native Metho

Out-parameter:

Error Description  Error occured while service was being generated.
Error Details  oracle.apps.fnd.soa.util.SOAException: ServiceGenerationError: Exception returned from JCA Service Runtime.oracle/classloader/util/AnnotatedNoClassDefFoundError
  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.invoke(JCAHandler.java:222)
  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.handleRequest(JCAHandler.java:153)
  at oracle.apps.fnd.soa.provider.SOAProvider.processMessage(SOAProvider.java:295)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:956)
  at oracle.j2ee.ws.server.WebServiceProcessor$1.run(WebServiceProcessor.java:358)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAs(Subject.java:396)
  at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:355)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:466)
  at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:114)
  at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:96)
  at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:194)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
  at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
  at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
  at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
  at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
  at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313)
  at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199)
  at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
  at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
  at java.lang.Thread.run(Thread.java:619)
oracle.apps.fnd.soa.util.SOAException: ServiceGenerationError: Exception returned from JCA Service Runtime.oracle/classloader/util/AnnotatedNoClassDefFoundError
  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.invoke(JCAHandler.java:222)
  at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.handleRequest(JCAHandler.java:153)
  at oracle.apps.fnd.soa.provider.SOAProvider.processMessage(SOAProvider.java:295)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:956)
  at oracle.j2ee.ws.server.WebServiceProcessor$1.run(WebServiceProcessor.java:358)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAs(Subject.java:396)
  at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:355)
  at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:466)
  at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:114)
  at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:96)
  at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:194)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
  at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
  at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
  at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
  at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
  at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313)
  at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199)
  at oracle.oc4j.network.ServerSo

To fix this we need to include xdb.jar in the oc4j.jar.

  1. Shutdown OC4J ($ADMIN_SCRIPTS_HOME/adopmnctl.sh stopall)
  2. Go to $ORACLE_HOME/j2ee/home (make sure that you are in the 10.1.3 folder, NOT 10.1.2)
  3. Make a backup of file oc4j.jar
  4. Copy file oc4j.jar to a temp folder
  5. Extract jar file
    jar xf oc4j.jar
  6. Edit file META-INF/boot.xml
    - In the shared library section called oracle.xml () look for the line
    - If the line is missing, then add the line to the section
    - Double check that xdb.jar exists in $ORACLE_HOME/rdbms/jlib/ (10.1.3 folder)
  7. Re-packaged boot.xml into oc4j.jar with path meta-inf
    jar uf oc4j.jar META-INF/boot.xml
  8. Copy the new oc4j.jar to $ORACLE_HOME/j2ee/home (10.1.3 folder)
  9. Restart OC4J ($ADMIN_SCRIPTS_HOME/adopmnctl.sh startall)