Forum Stats

  • 3,768,299 Users
  • 2,252,772 Discussions
  • 7,874,520 Comments

Discussions

JDeveloper WebService implementation

2752536
2752536 Member Posts: 27
edited Jan 16, 2017 6:48AM in JDeveloper and ADF

Hello,

I have encountered a serious problem in using ADF BC Application Module with custom made WebService.

I am hoping that i missed something, and that someone can help me or point me in right direction.

My problem occured when I could not expose methods with complex types as WebServices from Application Module,

So i have used custom class and get myself instance of Application Module, invoked methods and everything worked fine

     I was getting instance using this way:

      ADFContext  ac = ADFContext.initADFContext(null, null, null, null);
  
      AppModuleImpl  am = (AppModuleImpl)Configuration.createRootApplicationModule("model.AppModuleImpl ", "AppModuleImplLocal");

When running from main method in some class everything works great.

Problem is when i make that class WebService provider, then my methods try to get Application Module instance and get ::

ns0:Server

java.lang.NoClassDefFoundError: oracle/jbo/client/Configuration

I am really not sure what could be the issue, is there something which should be done on WebLogic (tried both on integrated and dedicated)

Or there is some other way to get Application Module instance.

both 12.2.1 versions of JDeveloper have exact the same problem

Best Answer

  • 2752536
    2752536 Member Posts: 27
    edited Jan 16, 2017 6:48AM Accepted Answer

    Solved the issue by adding all needed libraries to WAR.

    Obviously there was a problem with some sorf of conflict but CAT did not found anything, and its hard to understand why problem occurs in first place.

Answers

  • Timo Hahn
    Timo Hahn Senior Principal Technical Consultant - Oracle ACE Director Member, Moderator Posts: 37,655 Red Diamond
    edited Jan 10, 2017 2:03PM

    User, the NoClassDefFoundError exception points to a class loader problem. Sometimes the problem is static code in a bean or it's the order of libraries loaded from your application and the server you are deploying to.

    You can check https://examples.javacodegeeks.com/java-basics/exceptions/java-lang-noclassdeffounderror-how-to-solve-no-class-def-found… and https://www.youtube.com/watch?feature=player_detailpage&v=ArLTKapjV_8&app=desktop  which helps you understand the problem.

    Timo

  • 2752536
    2752536 Member Posts: 27
    edited Jan 10, 2017 2:20PM

    Hi Timo, thank you for fast response, and for the heads up for order of libraries.

    I will watch through materials you provided and posted back.

    What concerns me is that this problem occurs in the simplest kind o application as soon      Configuration.createRootApplicationModule("model.AppModuleImpl ", "AppModuleImplLocal");      is invoked (no static or anything).

    If i remember correctly in 11g i had no problems with this specific use case.

  • 2752536
    2752536 Member Posts: 27
    edited Jan 10, 2017 6:19PM

    I ve looked through links, and ill look more into cat. problem is that this Configuration class is from oracle.jbo.client.Configuration package on which I don't have any control. I will see what results cat give, but whatever they were I am not sure how to solve them

    I am posting this link also so, you can see what I was doing

    http://flexagon.com/2013/08/create-soap-webservices-using-bc4j/

  • 2752536
    2752536 Member Posts: 27
    edited Jan 11, 2017 12:45PM

    @Timo Hahn

    I was trying to fix my problem from yesterday but with no success although i have some additional information. I am hoping that you can point me in right direction.

    I checked with ClassLoader Analysis Tool and it did not found any class conflicts.

    I was researching a bit more, and found out that when I run my Web Service Class from inside JDeveloper everything works fine. It deploys application to integrated weblogic and web service is available and fully functional.

    If I try to pack it inside a War and regardless of deployment method (console, enterprise manager, jdeveloper) or server (integrated, dedicated )result is always the same - deploys OK, available via ws_utc, but when some method is invoked i get ::

    <oracle.dms.instrument.Noun> <Noun> <findOrCreateByPath> <Attempt to create pre-existing noun /DefaultDomain/DefaultServer/com.oracle.webservices.wls.ws-testclient-app-wls, of type wls_jaxrsapp_resources, with a conflicting type wls_ear.>

    <com.sun.xml.ws.server.sei.TieHandler> <TieHandler> <createResponse> <oracle/jbo/client/Configuration>

    java.lang.NoClassDefFoundError: oracle/jbo/client/Configuration

        at project1.WSClass.test(WSClass.java:32)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:497)

        at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:120)

        at weblogic.wsee.jaxws.WLSInstanceResolver$WLSInvoker.invoke(WLSInstanceResolver.java:93)

        at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)

        at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88)

        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)

        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)

        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)

        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)

        at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:419)

        at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:868)

        at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:422)

        at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:169)

        at weblogic.wsee.jaxws.WLSServletAdapter.handle(WLSServletAdapter.java:229)

        at weblogic.wsee.jaxws.HttpServletAdapter$AuthorizedInvoke.run(HttpServletAdapter.java:667)

        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:368)

        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:163)

        at weblogic.wsee.util.ServerSecurityHelper.authenticatedInvoke(ServerSecurityHelper.java:108)

        at weblogic.wsee.jaxws.HttpServletAdapter$3.run(HttpServletAdapter.java:286)

        at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:295)

        at weblogic.wsee.jaxws.JAXWSServlet.doRequest(JAXWSServlet.java:128)

        at weblogic.servlet.http.AbstractAsyncServlet.service(AbstractAsyncServlet.java:103)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)

        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)

        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)

        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)

        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)

        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)

        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:141)

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

        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)

        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:649)

        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:124)

        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:232)

        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)

        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)

        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:224)

        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)

        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3654)

        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3620)

        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)

        at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:196)

        at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)

        at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)

        at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2423)

        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2280)

        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2258)

        at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1626)

        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1586)

        at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)

        at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)

        at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)

        at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)

        at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)

        at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:617)

        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:397)

        at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

    Judging by the first line, it should be the conflict, but i cant find anything inside CAT, and I would really appreciate any help regarding the issue .

    On the link, i provide application example, very light, without datasoruce or anything, just 2 projects, one has app module with one method, second has ws with method to invoke method from app module.

    Zippyshare.com - Application12.zip

  • 2752536
    2752536 Member Posts: 27
    edited Jan 16, 2017 6:48AM Accepted Answer

    Solved the issue by adding all needed libraries to WAR.

    Obviously there was a problem with some sorf of conflict but CAT did not found anything, and its hard to understand why problem occurs in first place.

This discussion has been closed.