Refine search
public byte[] invokeBytes(String address, String transport, byte[] message) throws Exception { EndpointInfo ei = new EndpointInfo(null, "http://schemas.xmlsoap.org/soap/http"); ei.setAddress(address); ConduitInitiatorManager conduitMgr = getBus().getExtension(ConduitInitiatorManager.class); ConduitInitiator conduitInit = conduitMgr.getConduitInitiator(transport); Conduit conduit = conduitInit.getConduit(ei); TestMessageObserver obs = new TestMessageObserver(); conduit.setMessageObserver(obs); Message m = new MessageImpl(); conduit.prepare(m); OutputStream os = m.getContent(OutputStream.class); os.write(message); // TODO: shouldn't have to do this. IO caching needs cleaning // up or possibly removal... os.flush(); os.close(); return obs.getResponseStream().toByteArray(); }
public static String getTransportId(Bus bus, String address) { ConduitInitiatorManager conduitInitiatorMgr = bus .getExtension(ConduitInitiatorManager.class); ConduitInitiator conduitInitiator = null; if (conduitInitiatorMgr != null) { conduitInitiator = conduitInitiatorMgr .getConduitInitiatorForUri(address); } if (conduitInitiator != null) { return conduitInitiator.getTransportIds().get(0); } else { return null; } }
private static Set<String> getPrefixes(Object t) { Set<String> prefixes = null; if (t instanceof AbstractTransportFactory) { AbstractTransportFactory atf = (AbstractTransportFactory)t; prefixes = atf.getUriPrefixes(); } else if (t instanceof DestinationFactory) { DestinationFactory atf = (DestinationFactory)t; prefixes = atf.getUriPrefixes(); } else if (t instanceof ConduitInitiator) { ConduitInitiator atf = (ConduitInitiator)t; prefixes = atf.getUriPrefixes(); } return prefixes; } private boolean hasPrefix(String uri, Collection<String> prefixes) {
&& !DEFAULT_URI_RESOLVER_HANDLES.contains(base.getScheme())) { try { ConduitInitiatorManager mgr = bus.getExtension(ConduitInitiatorManager.class); ConduitInitiator ci = null; if ("http".equals(base.getScheme()) || "https".equals(base.getScheme())) { ci = mgr.getConduitInitiator("http://cxf.apache.org/transports/http"); ci = mgr.getConduitInitiatorForUri(base.toString()); EndpointInfo info = new EndpointInfo(); info.setName(new QName("http://cxf.apache.org", "TransportURIResolver")); info.setAddress(base.toString()); final Conduit c = ci.getConduit(info, bus); Message message = new MessageImpl(); Exchange exch = new ExchangeImpl(); message.setExchange(exch); message.put(Message.HTTP_REQUEST_METHOD, "GET"); c.setMessageObserver(new MessageObserver() { public void onMessage(Message message) { LoadingByteArrayOutputStream bout = new LoadingByteArrayOutputStream();
Conduit c = findCompatibleConduit(message); if (c == null) { Exchange exchange = message.getExchange(); EndpointInfo ei = endpoint.getEndpointInfo(); String transportID = ei.getTransportId(); try { ConduitInitiatorManager conduitInitiatorMgr = exchange.getBus() .getExtension(ConduitInitiatorManager.class); if (conduitInitiatorMgr != null) { ConduitInitiator conduitInitiator = conduitInitiatorMgr.getConduitInitiator(transportID); if (conduitInitiator != null) { String add = (String)message.get(Message.ENDPOINT_ADDRESS); String basePath = (String)message.get(Message.BASE_PATH); if (StringUtils.isEmpty(add) || add.equals(ei.getAddress())) { c = conduitInitiator.getConduit(ei); replaceEndpointAddressPropertyIfNeeded(message, add, c); } else { ad.setValue(StringUtils.isEmpty(basePath) ? add : basePath); epr.setAddress(ad); c = conduitInitiator.getConduit(ei, epr); + ei.getAddress()); if (c != null && c.getTarget() != null && c.getTarget().getAddress() != null) { replaceEndpointAddressPropertyIfNeeded(message, c.getTarget().getAddress().getValue(), c);
public Conduit getBackChannel(Message inMessage) throws IOException { Bus bus = inMessage.getExchange().getBus(); //this is a response targeting a decoupled endpoint. Treat it as a oneway so //we don't wait for a response. inMessage.getExchange().setOneWay(true); ConduitInitiator conduitInitiator = bus.getExtension(ConduitInitiatorManager.class) .getConduitInitiatorForUri(reference.getAddress().getValue()); if (conduitInitiator != null) { Conduit c = conduitInitiator.getConduit(ei, reference, bus); //ensure decoupled back channel input stream is closed c.setMessageObserver(new MessageObserver() { public void onMessage(Message m) { InputStream is = m.getContent(InputStream.class); if (is != null) { try { is.close(); } catch (Exception e) { //ignore } } } }); return c; } return null; } public MessageObserver getMessageObserver() {
protected Conduit getNextConduit(Message message) { Conduit answer = null; Exchange exchange = message.getExchange(); EndpointInfo ei = endpoint.getEndpointInfo(); String address = loadBalanceStrategy.getNextAlternateAddress(); if (overrideAddress(message)) { message.put(Message.ENDPOINT_ADDRESS, address); .getExtension(ConduitInitiatorManager.class); if (conduitInitiatorMgr != null) { ConduitInitiator conduitInitiator = conduitInitiatorMgr.getConduitInitiatorForUri(address); if (conduitInitiator != null) { EndpointReferenceType epr = new EndpointReferenceType(); ad.setValue(address); epr.setAddress(ad); answer = conduitInitiator.getConduit(ei, epr); answer.setMessageObserver(observer); } else { getLogger().warning("MessageObserver not found"); + ei.getAddress());
EndpointInfo info = new EndpointInfo(); info.setAddress(address); Message outMessage = new MessageImpl(); Exchange exch = new ExchangeImpl(); outMessage.setExchange(exch); final Conduit c = ci.getConduit(info, BusFactory.getThreadDefaultBus(false)); //TODO verify bus outMessage.put(Message.HTTP_REQUEST_METHOD, "GET"); c.prepare(outMessage); c.setMessageObserver(createMessageObserver(c)); c.close(outMessage);
public Conduit getConduit(EndpointInfo ei, EndpointReferenceType target, Bus bus) throws IOException { String address = target == null ? ei.getAddress() : target.getAddress().getValue(); BindingInfo bi = ei.getBinding(); String transId = ei.getTransportId(); if (bi instanceof SoapBindingInfo) { transId = ((SoapBindingInfo)bi).getTransportURI(); if (transId == null) { transId = ei.getTransportId(); } } ConduitInitiator conduitInit; try { ConduitInitiatorManager mgr = bus.getExtension(ConduitInitiatorManager.class); if (StringUtils.isEmpty(address) || address.startsWith("http") || address.startsWith("jms") || address.startsWith("soap.udp")) { conduitInit = mgr.getConduitInitiator(mapTransportURI(transId, address)); } else { conduitInit = mgr.getConduitInitiatorForUri(address); } if (conduitInit == null) { throw new RuntimeException(String.format(CANNOT_GET_CONDUIT_ERROR, address, transId)); } return conduitInit.getConduit(ei, target, bus); } catch (BusException e) { throw new RuntimeException(String.format(CANNOT_GET_CONDUIT_ERROR, address, transId)); } }
definition = getBus().getExtension(WSDLManager.class) .getDefinition(wsdl.getURL()); schemaUtil.getSchemas(definition, serInfo); serInfo = ei.getService(); List<ServiceInfo> serviceInfos = new ArrayList<ServiceInfo>(); serviceInfos.add(serInfo); .getDocument(swBuilder.build()); if (endpoint == null) { endpoint = ei.getName().getLocalPart(); ei.setAddress(locationURI.toString()); ConduitInitiatorManager conduitMgr = getBus().getExtension( ConduitInitiatorManager.class); conduitInit = conduitMgr.getConduitInitiator(ei .getTransportId()); conduit = conduitInit.getConduit(ei); CxfBcProviderMessageObserver obs = new CxfBcProviderMessageObserver(this); conduit.setMessageObserver(obs); checkWSRMInterceptors(); super.validate();
String add = (String)message.get(Message.ENDPOINT_ADDRESS); String basePath = (String)message.get(Message.BASE_PATH); if (StringUtils.isEmpty(add) || add.equals(ei.getAddress())) { c = conduitInitiator.getConduit(ei, exchange.getBus()); replaceEndpointAddressPropertyIfNeeded(message, add, c); } else { ad.setValue(StringUtils.isEmpty(basePath) ? add : basePath); epr.setAddress(ad); c = conduitInitiator.getConduit(ei, epr, exchange.getBus()); c.setMessageObserver(observer); } else { getLogger().warning("MessageObserver not found");
service = new ServiceImpl(si); BindingFactoryManager bfm = bus.getExtension(BindingFactoryManager.class); BindingFactory bindingFactory = bfm.getBindingFactory(soapVersion); BindingInfo bi = bindingFactory.createBindingInfo(service, si.addBinding(bi); if (transportId == null) { ConduitInitiatorManager cim = bus.getExtension(ConduitInitiatorManager.class); ConduitInitiator ci = cim.getConduitInitiatorForUri(location); transportId = ci.getTransportIds().get(0); EndpointInfo ei = new EndpointInfo(si, transportId); ei.setBinding(bi); ei.setName(epName == null ? iName : epName); ei.setAddress(location); si.addEndpoint(ei);
private void modifyTransportIdPerAddress(EndpointInfo ei) { //get chance to set transportId according to the the publish address prefix //this is useful for local & camel transport if (transportId == null && getAddress() != null) { DestinationFactory df = getDestinationFactory(); if (df == null) { DestinationFactoryManager dfm = getBus().getExtension( DestinationFactoryManager.class); df = dfm.getDestinationFactoryForUri(getAddress()); } if (df != null) { transportId = df.getTransportIds().get(0); } else { // check conduits (the address could be supported on // client only) ConduitInitiatorManager cim = getBus().getExtension( ConduitInitiatorManager.class); ConduitInitiator ci = cim .getConduitInitiatorForUri(getAddress()); if (ci != null) { transportId = ci.getTransportIds().get(0); } } } if (transportId != null) { ei.setTransportId(transportId); } }
if (partialResponse != null) { partialResponse.put(Message.RESPONSE_CODE, HttpURLConnection.HTTP_ACCEPTED); backChannel = new BackChannelConduit(address, inMessage); } else { backChannel = conduitInitiator.getConduit(endpointInfo, address); backChannel.setMessageObserver(new MessageObserver() { public void onMessage(Message m) { if (m.getContentFormats().contains(InputStream.class)) {
&& !DEFAULT_URI_RESOLVER_HANDLES.contains(base.getScheme())) { try { ConduitInitiatorManager mgr = bus.getExtension(ConduitInitiatorManager.class); ConduitInitiator ci = null; if ("http".equals(base.getScheme()) || "https".equals(base.getScheme())) { ci = mgr.getConduitInitiator("http://cxf.apache.org/transports/http"); ci = mgr.getConduitInitiatorForUri(base.toString()); EndpointInfo info = new EndpointInfo(); info.setName(new QName("http://cxf.apache.org", "TransportURIResolver")); info.setAddress(base.toString()); final Conduit c = ci.getConduit(info); Message message = new MessageImpl(); Exchange exch = new ExchangeImpl(); message.setExchange(exch); message.put(Message.HTTP_REQUEST_METHOD, "GET"); c.setMessageObserver(new MessageObserver() { public void onMessage(Message message) { LoadingByteArrayOutputStream bout = new LoadingByteArrayOutputStream();
Conduit c = findCompatibleConduit(message); if (c == null) { Exchange exchange = message.getExchange(); EndpointInfo ei = endpoint.getEndpointInfo(); String transportID = ei.getTransportId(); try { ConduitInitiatorManager conduitInitiatorMgr = exchange.getBus() .getExtension(ConduitInitiatorManager.class); if (conduitInitiatorMgr != null) { ConduitInitiator conduitInitiator = conduitInitiatorMgr.getConduitInitiator(transportID); if (conduitInitiator != null) { String add = (String)message.get(Message.ENDPOINT_ADDRESS); String basePath = (String)message.get(Message.BASE_PATH); if (StringUtils.isEmpty(add) || add.equals(ei.getAddress())) { c = conduitInitiator.getConduit(ei); replaceEndpointAddressPropertyIfNeeded(message, add, c); } else { ad.setValue(StringUtils.isEmpty(basePath) ? add : basePath); epr.setAddress(ad); c = conduitInitiator.getConduit(ei, epr); + ei.getAddress()); if (c != null && c.getTarget() != null && c.getTarget().getAddress() != null) { replaceEndpointAddressPropertyIfNeeded(message, c.getTarget().getAddress().getValue(), c);
public Conduit getBackChannel(Message inMessage) throws IOException { Bus bus = inMessage.getExchange().getBus(); //this is a response targeting a decoupled endpoint. Treat it as a oneway so //we don't wait for a response. inMessage.getExchange().setOneWay(true); ConduitInitiator conduitInitiator = bus.getExtension(ConduitInitiatorManager.class) .getConduitInitiatorForUri(reference.getAddress().getValue()); if (conduitInitiator != null) { Conduit c = conduitInitiator.getConduit(ei, reference, bus); //ensure decoupled back channel input stream is closed c.setMessageObserver(new MessageObserver() { public void onMessage(Message m) { InputStream is = m.getContent(InputStream.class); if (is != null) { try { is.close(); } catch (Exception e) { //ignore } } } }); return c; } return null; } public MessageObserver getMessageObserver() {
protected Conduit getNextConduit(Message message) { Conduit answer = null; Exchange exchange = message.getExchange(); EndpointInfo ei = endpoint.getEndpointInfo(); String address = loadBalanceStrategy.getNextAlternateAddress(); if (overrideAddress(message)) { message.put(Message.ENDPOINT_ADDRESS, address); .getExtension(ConduitInitiatorManager.class); if (conduitInitiatorMgr != null) { ConduitInitiator conduitInitiator = conduitInitiatorMgr.getConduitInitiatorForUri(address); if (conduitInitiator != null) { EndpointReferenceType epr = new EndpointReferenceType(); ad.setValue(address); epr.setAddress(ad); answer = conduitInitiator.getConduit(ei, epr, exchange.getBus()); answer.setMessageObserver(observer); } else { getLogger().warning("MessageObserver not found"); + ei.getAddress());
EndpointInfo info = new EndpointInfo(); info.setAddress(address); Message outMessage = new MessageImpl(); Exchange exch = new ExchangeImpl(); outMessage.setExchange(exch); exch.put("org.apache.cxf.transport.process_fault_on_http_400", true); //JBWS-3945 final Conduit c = ci.getConduit(info, BusFactory.getThreadDefaultBus(false)); //TODO verify bus if ("Content-Type".equals(mimeHeader.getName())) outMessage.put(Message.CONTENT_TYPE, mimeHeader.getValue()); outMessage.put(Message.HTTP_REQUEST_METHOD, "POST"); outMessage.put(Message.PROTOCOL_HEADERS, outHeaders); c.prepare(outMessage); OutputStream outs = outMessage.getContent(OutputStream.class); msgOut.writeTo(outs); c.setMessageObserver(createMessageObserver(c)); c.close(outMessage);
public Conduit getConduit(EndpointInfo ei, EndpointReferenceType target, Bus bus) throws IOException { String address = target == null ? ei.getAddress() : target.getAddress().getValue(); BindingInfo bi = ei.getBinding(); String transId = ei.getTransportId(); if (bi instanceof SoapBindingInfo) { transId = ((SoapBindingInfo)bi).getTransportURI(); if (transId == null) { transId = ei.getTransportId(); } } ConduitInitiator conduitInit; try { ConduitInitiatorManager mgr = bus.getExtension(ConduitInitiatorManager.class); if (StringUtils.isEmpty(address) || address.startsWith("http") || address.startsWith("jms") || address.startsWith("soap.udp")) { conduitInit = mgr.getConduitInitiator(mapTransportURI(transId, address)); } else { conduitInit = mgr.getConduitInitiatorForUri(address); } if (conduitInit == null) { throw new RuntimeException(String.format(CANNOT_GET_CONDUIT_ERROR, address, transId)); } return conduitInit.getConduit(ei, target, bus); } catch (BusException e) { throw new RuntimeException(String.format(CANNOT_GET_CONDUIT_ERROR, address, transId)); } }