2017-08-17 53 views
12

Z jakiegoś powodu wywołanie usługi sieciowej powoduje zgłoszenie wyjątku NullPointerException do lokalnej instalacji Weblogic 12c. Ten sam pakiet działa poprawnie na innym egzemplarzu Weblogic 12c, więc musi być coś nie tak na mojej konfiguracji weblogic lub parametrów uruchamiania serwera/java. Jednak nie mogłem dowiedzieć się jaka jest różnica, a komunikat dziennika serwera w ogóle nie pomaga. Oczywiście używamy również tych samych bibliotek JRE i ścieżek klas.Weblogic 12c Web Service NullPointerException

Oto wyjątek

####<8.8.2017, 2:10:53,106 ip. EEST> <Error> <com.sun.xml.ws.server.sei.TieHandler> <IT-V-R90HKRNH> <is-mansrv> <[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'> <HekoPassi> <> <46eb29b8-cb8a-44a9-94ed-e223acc07388-0000005d> <1502190653106> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-000000> <null 
java.lang.NullPointerException 
    at weblogic.ejb.container.internal.BaseWSLocalObject.__WL_preInvoke(BaseWSLocalObject.java:85) 
    at com.foo.bar.service.sessionfacade.SessionFacadeBean_afdkf0_WSOImpl.__WL_getPublicKey_WS_preInvoke(Unknown Source) 
    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:498) 
    at weblogic.wsee.server.ejb.WsEjb.preInvoke(WsEjb.java:50) 
    at weblogic.wsee.jaxws.WLSEjbInstanceResolver$WLSEjbInvoker.invoke(WLSEjbInstanceResolver.java:193) 
    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.ServletStubImpl.execute(ServletStubImpl.java:247) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3679) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3649) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326) 
    at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197) 
    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:2433) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2281) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2259) 
    at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651) 
    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:640) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:346) 

Każdy pomysł co może być przyczyną tego wyjątku (lub jak mogę go debugować, wydaje się, że jest wyjątek od dynamicznego proxy generowanej przez WebLogic, zanim kontrola idzie nawet do klasa implementacji). Czy mogę uczynić wyjątek bardziej szczegółowym? Czy to może być problem z bezpieczeństwem? Ale znowu nic nie wskazuje na to w stosie. Ponadto nie ma wyjątków w dzienniku wdrażania.

+0

I odkryli, że błąd występuje, gdy 'config.xml' zawiera ' WebLogic prawda '. Czy masz taką konfigurację? – Ilya

+0

Brak wystarczających informacji, na podstawie których ktoś może powiedzieć Ci rozwiązanie. Podobnie do jakiej usługi sieciowej próbujesz uzyskać dostęp. Czy jest to specyficzne dla konkretnego api webservice? jak próbujesz wykonać/zadzwonić? – Ravi

+0

Stacktrace 'weblogic.wsee.jaxws' wyraźnie stwierdza, że ​​używam interfejsu API JAX-WS i Weblogic. Po prostu próbuję uzyskać dostęp do typowej usługi sieciowej za pomocą SoapUI przy użyciu uwierzytelniania szyfrowania WS-security. –

Odpowiedz

3

Nadzieja to pomaga:

(od MOSC (My Oracle Support Community) java.lang.NullPointerException: com.sun.xml.ws.spi.db.JAXBWrapperAccessor.getPropertyAccessor podczas rozmieszczania WebService (Doc ID 2207272,1))

APPLIES TO: 

Oracle WebLogic - Wersja 12.1.1.0 do 12.2.1.2.0 [12c Release] Informacje zawarte w niniejszym dokumencie odnosi się do dowolnej platformie.

SYMPTOMS 

Podczas próby wdrażania aplikacji webservices z poniższej przykładowy fragment kodu,

@WebService 
public interface HelloServiceInterface { 
@WebMethod 
@RequestWrapper(className = "hello.HelloRequest") 
public String hello(@WebParam(name = "names") List<String> names); 

następujący błąd:

Java. lang. NullPointerException: co com.sun.xml.ws.spi.db.JAXBWrapperAccessor.getPropertyAccessor (JAXBWrapperAccessor.java:261) w com.sun.xml.ws.db.toplink.JAXBContextWrapper.getElementPropertyAccessor (JAXBContextWrapper.java:170) na com.sun.xml.ws.server.sei.EndpointArgumentsBuilder $ DocLit (EndpointArgumentsBuilder.java:598) na com.sun.xml.ws.server.sei.TieHandler.createArgumentsBuilder (TieHandler.java.: 143) na stronie com.sun.xml.ws.server.sei.TieHandler. (TieHandler.java:115) pod adresem com.sun.xml.ws.db.DatabindingImpl. (DatabindingImpl.java:118) pod adresem . sun.xml.ws.db.DatabindingProviderImpl.create (DatabindingProviderImpl.java:74) at com.sun.xml.ws.db.DatabindingProviderImpl.create (DatabindingProviderImpl.java:58) w com.sun.xml.ws.db.DatabindingFactoryImpl.createRuntime (DatabindingFactoryImpl.java:120) w com.sun. xml.ws.server.EndpointFactory.createSEIModel (EndpointFactory.java:521) pod adresem com.sun.xml.ws.server.EndpointFactory.create (EndpointFactory.java:300) pod adresem com.sun.xml.ws. server.EndpointFactory.createEndpoint (EndpointFactory.java:164) at com.sun.xml.ws.api.server.WSEndpoint.create (WSEndpoint.java:577) pod adresem com.sun.xml.ws.api.server.WSEndpoint.create (WSEndpoint.java:560) pod adresem com.sun. xml.ws.api.server.WSEndpoint.create (WSEndpoint.java:639) w weblogic.wsee.jaxws.JAXWSDeployedServlet.getEndpoint (JAXWSDeployedServlet.java:355) w weblogic.wsee.jaxws.JAXWSServlet.registerEndpoint (JAXWSServlet .java: 167) w weblogic.wsee.jaxws.JAXWSServlet.init (JAXWSServlet.java:79) w weblogic.wsee.jaxws.JAXWSDeployedServlet.init (JAXWSDeployedServlet.java:91) w javax.servlet.GenericServlet.init (GenericServlet.java:244)

CAUSE 

Jest to znany problem z dostawcą Eclipselink MOXy. Adnotacja XmlElementWrapper jest ignorowana. Problem został zgłoszony w numerze Błąd: 16685902 [https://support.oracle.com/epmos/faces/BugDisplay?parent=DOCUMENT&sourceId=2207272.1&id=16685902] - LISTA PARAMETRÓW STRONY INTERNETOWEJ PODAJE NULLPOINTERWYBEST EKSPERTOWY W WYDANIU.

SOLUTION 

Apply Patch 16685902 [https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?parent=DOCUMENT&sourceId=2207272.1&patchId=16685902] do WebLogic Server 12.1.1. Jako obejście, należy unikać przy użyciu dostawcy EclipseLink Moxy w WebLogic, wykonując poniżej:

ustawionej PRE_CLASSPATH =% WLS% \ modules \ databinding.override_1.0.0.0.jar

REFERENCES 

BUG : 16685902 [https://support.oracle.com/epmos/faces/BugDisplay?parent=DOCUMENT&sourceId=2207272.1&id=16685902] - Zestawienie listy parametrów DAJE NullPointerException AT WDRAŻANIA

Powiązane problemy