是否可以将WS-Addressing与解耦的endpoint一起使用,但不使用Jetty,只使用ServletDestination?
我得到了以下异常,并且我的SOAP标头包含任何错误的回复To地址:
2014-05-26 17:20:35,733 ERROR [org.apache.cxf.transport.http.HTTPTransportFactory] (server_Worker-1) Cannot find any registered HttpDestinationFactory from the Bus.
2014-05-26 17:20:35,733 WARN [org.apache.cxf.ws.addressing.MAPAggregator] (server_Worker-1) decoupled endpoint creation failed:
java.io.IOException: Cannot find any registered HttpDestinationFactory from the Bus.
at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:296)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.getDestination(MAPAggregatorImpl.java:990)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.setUpDecoupledDestination(MAPAggregatorImpl.java:961)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.createDecoupledDestination(MAPAggregatorImpl.java:945)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.getReplyTo(MAPAggregatorImpl.java:930)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.addRoleSpecific(MAPAggregatorImpl.java:850)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.aggregate(MAPAggregatorImpl.java:617)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.mediate(MAPAggregatorImpl.java:448)
at org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl.handleMessage(MAPAggregatorImpl.java:143)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
at $Proxy1106.doServiceWS(Unknown Source)
at fr.edu.rennes.cyclades.pilotage.async.WSJob.executeTask(WSJob.java:116)
at fr.edu.ac_rennes.webfusion.quartz.job.BaseJob.executeInternal(BaseJob.java:101)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
有效载荷:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<Action xmlns="http://www.w3.org/2005/08/addressing">http://api.service.support.cyclades.rennes.edu.fr/QuartzWebService/doServiceWS</Action>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:34978730-9686-40ec-8e66-dcc68c0be27c</MessageID>
<To xmlns="http://www.w3.org/2005/08/addressing">http://sapdcy1.in.ac-rennes.fr:8280/ws_centre/cxf/DeclarerCentresBatchService</To>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
</soap:Header>
<soap:Body/>
</soap:Envelope>
有人有线索吗?
我找到了解决问题的办法。我将decoupled\uendpoint设置为相对URL(不以开头http://...)所以CXF决定使用ServletDestinationFactory而不是JettyDestinationFactory(查看org.apache.CXF.transport.http.HTTPTransportFactory.getDestination(EndpointInfo))。然后,我设置了一个CXF拦截器,该拦截器构造了一个绝对URL,以便SOAP标头中的replyTo地址包含一个有效且可调用的HTTP地址。
public class ReplyToInterceptor extends AbstractPhaseInterceptor<Message> {
/** Le logger */
private static final Logger LOGGER = LoggerFactory.getLogger(ReplyToInterceptor.class);
/** Host name */
private String hostName;
/** Host port */
private String hostPort;
/**
* Constructeur par défaut
*/
public ReplyToInterceptor() {
super(Phase.PRE_LOGICAL);
addAfter(MAPAggregator.class.getName());
}
/**
* Ajoute l'adresse de retour asynchrone
* @param message Le message
*/
public void handleMessage(Message message) {
if (message instanceof XMLMessage) {
LOGGER.debug("Ignoring REST message");
return;
}
AddressingProperties maps = ContextUtils.retrieveMAPs(message, false, true, false);
if (maps != null) {
LOGGER.debug("WS-Addressing is enabled");
if (!ContextUtils.isRequestor(message)) {
LOGGER.debug("Ignoring response message");
return;
}
EndpointReferenceType replyTo = maps.getReplyTo();
if (replyTo == null) {
return;
}
AttributedURIType replyToAddress = replyTo.getAddress();
if (replyToAddress.getValue().startsWith("http") && !replyToAddress.getValue().startsWith("http://www.w3.org/2005/08/addressing/")) {
LOGGER.debug("Address is already absolute: {}", replyToAddress.getValue());
return;
}
RequestAttributes currentRequestAttributes = RequestContextHolder.getRequestAttributes();
String contextPath = null;
if (currentRequestAttributes != null) {
LOGGER.debug("HttpServletRequest is accessible");
contextPath = ((ServletRequestAttributes) currentRequestAttributes).getRequest().getContextPath();
} else {
LOGGER.debug("Can't access HttpServletRequest, replyTo address will use default context path");
contextPath = "/a_server";
}
String url = "http://" + this.hostName + ":" + this.hostPort + contextPath + "/cxf/async_endpoint";
LOGGER.debug("Setting replyTo URL to: {}", url);
replyToAddress.setValue(url);
} else {
LOGGER.debug("WS-Addressing is disabled");
}
}
}
当我尝试向pod应用服务时,endpoint总是无。有人知道根本原因吗?我还检查选择器是否与部署中定义的匹配。亚马尔。下面是我使用的部署、服务文件。我还附上了服务说明。 部署。亚马尔 服务亚马尔 kubectl描述svc kubectl get pods-n mynamespace——显示标签 kubectl获取svc gethnode-n mynamespace-o宽
问题内容: 有谁知道为什么不调用Python的函数,因为已经有一个可以删除并返回最后一个元素(索引为-1)并且语义与该用法一致的原因? 问题答案: 因为“ append”早在想到“ pop”之前就已存在。受Python 0.9.1 支持的list.append于1991年初。通过比较,这是在comp.lang.python上讨论的有关在1997年添加pop的一部分。Guido写道: 为了实现一个堆
几个小时前,我打开了一个问题,它被标记为重复,但是它不是标记问题的重复。 从那以后,我设法完成了一些事情,解决了一些问题,所以我的问题是: 我试图将一个Springbean自动连接到另一个,但是我的问题是@自动连接字段总是空的,这说明它们都是受管理的bean,并且自己可以正确工作。 我发现,通过实现ApplicationContextAware接口,可以在bean中访问ApplicationCon
我正在尝试创建restful API(使用Spring Boot v2.0.0.Release),我希望有一个endpoint,但我希望有两种可能的用途: 首先,这可能吗?其次,有人有代码示例吗? 非常感谢你的帮助
我是阿帕奇骆驼队的新手。我试图将一个交换从java方法发送到一个路由,但它给了我“由:org.apache.camel.component.direct.DirectConsumerNotAvailableException:endpoint上没有可用的消费者”错误。我想知道这个错误到底是什么,我们什么时候得到这个?
问题内容: python模块线程具有一个用于在其他线程中运行进程和功能的对象。该对象有一个方法,但没有方法。调用简单方法无法停止的原因是什么?我可以想象使用该方法不方便的情况… 问题答案: 可以是通用的并且有意义,因为它只是触发了线程的目标,但是通用可以做什么?根据线程在做什么,您可能必须关闭网络连接,释放系统资源,转储文件和其他流,或其他任何数量的自定义,重要任务。任何能够以通用方式甚至完成大多