Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/web-services/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 在CXF拦截器和webservice之间共享数据_Web Services_Cxf_Jax Ws_Ws Security_Wss4j - Fatal编程技术网

Web services 在CXF拦截器和webservice之间共享数据

Web services 在CXF拦截器和webservice之间共享数据,web-services,cxf,jax-ws,ws-security,wss4j,Web Services,Cxf,Jax Ws,Ws Security,Wss4j,我正在将安全拦截器与ApacheCxfWSS4JInInterceptor一起使用 有没有办法将数据从拦截器传递到webservice 我一直在WebServiceContext中搜索,但找不到它。您可以使用CXF映射来存储任意键/值对。该交换可用于输入和输出消息。在拦截器中,将对象添加到交换中,例如 Object value = ...; message.getExchange().put("key", value); 在您的服务中,您可以使用访问exchange并检索对象,例如 Objec

我正在将安全拦截器与ApacheCxf
WSS4JInInterceptor
一起使用

有没有办法将数据从拦截器传递到webservice

我一直在
WebServiceContext
中搜索,但找不到它。

您可以使用CXF映射来存储任意键/值对。该交换可用于输入和输出消息。在拦截器中,将对象添加到交换中,例如

Object value = ...;
message.getExchange().put("key", value);
在您的服务中,您可以使用访问exchange并检索对象,例如

Object value = PhaseInterceptorChain.getCurrentMessage().getExchange().get("key");
您可以使用CXF映射来存储任意键/值对。该交换可用于输入和输出消息。在拦截器中,将对象添加到交换中,例如

Object value = ...;
message.getExchange().put("key", value);
在您的服务中,您可以使用访问exchange并检索对象,例如

Object value = PhaseInterceptorChain.getCurrentMessage().getExchange().get("key");

您是否希望在自己的WSS4JInInterceptor扩展和服务实现之间传递任意数据?我的扩展是一个自定义加密实例,它调用存储过程从数据库获取证书,等等。来自SP的一些数据必须在my webservice实现中可用。您是否希望在自己的WSS4JInInterceptor扩展和您的服务实现之间传递任意数据?my extension是一个自定义加密实例,它调用存储过程从数据库获取证书,等等。我的webservice实现中必须有来自SP的一些数据。这个回答是正确的,但我写错了问题。很抱歉,我误解了这些概念。我需要将数据从org.apache.ws.security.components.crypto.crypto传递到webservice实现。我再问一次。谢谢@patrick您的类在CXF中实现加密吗?只要创建了CXF消息,就应该能够使用PhaseInterceptorChain.getCurrentMessage().getExchange().put()向exchange添加内容。否则,ThreadLocal可能是另一种选择。哦,你是对的,我将尝试使用PhaseInterceptorChain。谢谢;)我能够在一个实现javax.security.auth.callback.callback的类中访问这个上下文,并且是wss4jInterceptor(org.apache.cxf.ws.security.wss4j.wss4jInterceptor)的一部分,并且能够在它和一个实现org.aopalliance.intercept.MethodInterceptor.MethodInterceptor的spring拦截器类之间共享数据。它工作得很好!这个回答是正确的,但我写错了问题。很抱歉,我误解了这些概念。我需要将数据从org.apache.ws.security.components.crypto.crypto传递到webservice实现。我再问一次。谢谢@patrick您的类在CXF中实现加密吗?只要创建了CXF消息,就应该能够使用PhaseInterceptorChain.getCurrentMessage().getExchange().put()向exchange添加内容。否则,ThreadLocal可能是另一种选择。哦,你是对的,我将尝试使用PhaseInterceptorChain。谢谢;)我能够在一个实现javax.security.auth.callback.callback的类中访问这个上下文,并且是wss4jInterceptor(org.apache.cxf.ws.security.wss4j.wss4jInterceptor)的一部分,并且能够在它和一个实现org.aopalliance.intercept.MethodInterceptor.MethodInterceptor的spring拦截器类之间共享数据。它工作得很好!