当前位置: 首页 > 知识库问答 >
问题:

Weblogic 12c Web服务

籍弘伟
2023-03-14

出于某种原因,网络服务的调用在我本地的Weblogic 12c安装上抛出了NullPointerExctive。同样的包在Weblogic 12c的另一个实例上工作正常,所以我的网络配置或服务器/java启动参数一定有问题。然而,我不知道有什么区别,服务器日志消息也没有任何帮助。当然,我们也使用相同的JRE和类路径库。

这是个例外

####<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)

任何可能导致这个异常的想法(或者我如何调试它,看起来这个异常是从weblogic生成的动态代理中抛出的,甚至在控件进入实现类之前)。我能让这个异常更详细吗?这可能是一个安全问题吗?但是话说回来,stackTrack中没有任何东西表明这一点。此外,部署日志中也没有异常。

共有2个答案

端木存
2023-03-14

对于上面提到的bug,这是不必要的。该缺陷自12.1.3版起得到解决

上面提到的解决方案是可行的(更改JAXB提供程序),但对于PRE_CLASSPATH变量中的硬代码(可能仅适用于开发环境),它是一个糟糕的解决方案。

Weblogic版本12.1.1将默认JAXB提供程序从Glassfish RI更改为Eclipse MOXy,然后您可以再次使用Glassfish配置Java服务提供程序接口(SPI

https://docs.oracle.com/middleware/1213/wls/WSGET/jax-ws-datatypes.htm#WSGET345

通过这种方式,您可以看到真正的根本原因。在我们的案例中,这是一个关于重复类的问题(使用JAXB创建,具有不同的属性,但具有相同的包/命名空间)。

充煌
2023-03-14

希望这有助于:

(来自MOSC(我的Oracle支持社区)java。lang.NullPointerException:com。太阳xml。ws。spi。db。JaxbwraperAccessor。部署WebService时的getPropertyAccessor(文档ID 2207272.1))

APPLIES TO:

Oracle WebLogic Server-版本12.1.1.012.2.1.2.0[版本12c]本文档中的信息适用于任何平台。

SYMPTOMS

尝试使用以下示例代码段部署webservice应用程序时,

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

出现以下错误:

java.lang.空点异常:在com.sun.xml.ws.spi.db.JAXBWrapperAccessor.get属性访问器(JAXBWrapperAccessor.java:261)在com.sun.xml.ws.db.toplink.JAXBContextWrapper.get元素属性访问器(JAXBContextWrapper.java:170)在com.sun.xml.ws.server.sei.Endpoint ArgumentsBuilder$DocLit。(Endpoint ArgumentsBuilder.java:598)在com.sun.xml.ws.server.sei.TieHandler.createArgumentsBuilder(TieHandler.java:143)在com.sun.xml.ws.server.sei.TieHandler。(TieHandler.java:115)在com.sun.xml.ws.db.数据库Impl。(数据库mpl.java:118)在com.sun.xml.ws.db.数据库提供程序mpl.create(数据库提供程序mpl.java:74)在com.sun.xml.ws.db.数据库提供程序。在com. sun. xml. ws. server. Endpoint Factory. createSEIModel(Endpoint Factory. java: 521)在com. sun. xml. ws. server. Endpoint Factory. createSEIModel(Endpoint Factory. java: 521)在com. sun. xml. ws. server. Endpoint Factory. create(Endpoint Factory. java: 300)在com. sun. xml. ws. ws. server. Endpoint. createEndpoint(Endpoint Factory. java: 164)在com. sun. xml. ws. api. server. WSEndpoint. cre(WSEndpoint. java: 577)在com. sun. xml. ws. api. server. WSEndpoint. cre(WSEndpoint. java: 560)在weblog. wsee. jaxws.

CAUSE

这是Eclipselink MOXy提供商的一个已知问题。XmlElementWrapper注释被忽略。该问题在Bug:16685902[https://support.oracle.com/epmos/faces/BugDisplay?parent=DOCUMENT

SOLUTION

应用补丁16685902[https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?parent=DOCUMENT

设置PRE_CLASSPATH=%WLS%\模块\databinding.override_1.0.0.0. jar

REFERENCES

BUG: 16685902[https://support.oracle.com/epmos/faces/BugDisplay?parent=DOCUMENT

 类似资料:
  • 在 Serenity 中,服务终结点是 ASP.NET MVC 控制器的一个子类。 这是 Northwind 的 OrderEndpoint 摘录: namespace Serene.Northwind.Endpoints { [RoutePrefix("Services/Northwind/Order"), Route("{action}")] [ConnectionKey("N

  • 服务发现服务[架构概述]。 { "cluster": "{...}", "refresh_delay_ms": "{...}" } cluster (required, object) 承载服务发现服务的上游群集的标准定义。该群集必须实现和运行SDS HTTP API的REST服务。 refresh_delay_ms (required, integer) 每次访问SDS群集的API延迟

  • 服务器端提供了比较多的关于推送的 API,包括广播,多播和单播方式的推送,还有超时,心跳,推送事件等设置。 Timeout 字段 该字段用于设置推送空闲超时。默认值为 120 秒,即 2 分钟。 当服务器发布了推送主题后(后面会专门介绍推送),客户端会跟服务器端保持一个长连接,如果达到超时时间,仍然没有任何消息推送给客户端,则返回 nil,此时,如果客户端仍然在线的话,则会立即再次发送获取推送主题

  • 主要内容:1.RPC 架构,2.同步调用与异步调用,3.流行的 RPC 框架,4.HTTP 服务,5.总结1.RPC 架构 2.同步异步调用 3.流行的 RPC 框架 1.RPC 架构 先说说 RPC 服务的基本架构吧。我们可以很清楚地看到,一个完整的 RPC 架构里面包含了四个核心的组件。 Client Server Client Stub Server Stub(这个Stub大家可以理解为存根) 客户端(Client),服务的调用方。 服务端(Server),真正的服务提供者。 客户端存根,

  • 主要内容:1.RPC 架构,2.同步调用与异步调用,3.流行的 RPC 框架,4.HTTP 服务,5.总结1.RPC 架构 先说说 RPC 服务的基本架构吧。我们可以很清楚地看到,一个完整的 RPC 架构里面包含了四个核心的组件。 Client Server Client Stub Server Stub(这个Stub大家可以理解为存根) 客户端(Client),服务的调用方。 服务端(Server),真正的服务提供者。 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后

  • 服务定义了访问后端Pod的访问方式。 服务(Service)定义了访问后端Pod的访问方式,服务的详细介绍内容,请参考kubernets官方文档-Service。目前支持两种访问方式。 内部:即Service的ClusterIP模式,自动分配集群内部IP地址,仅供集群内部访问。 外部:即Service的Loadbalance模式,配合外部 云联壹云 提供的负载均衡服务使用,通过负载均衡实例的服务地

  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot

  • 在异步HTTP SERVER中使用服务 全局方法service_center() 使用service_center($service)获取服务地址,然后使用call()方法调用公开的服务方法 $service = (yield service_center('User')); $user = (yield $service->call("User::getUser", ['id'