Package com.sun.xml.ws.api.pipe

Examples of com.sun.xml.ws.api.pipe.Fiber


    public void schedule(final Packet request, final CompletionCallback callback, FiberContextSwitchInterceptor interceptor) {
        request.endpoint = WSEndpointImpl.this;
        if (wsdlProperties != null) {
            request.addSatellite(wsdlProperties);
        }
        Fiber fiber = engine.createFiber();
        if (interceptor != null) {
            fiber.addInterceptor(interceptor);
        }
        final Tube tube = tubePool.take();
        fiber.start(tube, request, new Fiber.CompletionCallback() {
            public void onCompletion(@NotNull Packet response) {
                tubePool.recycle(tube);
                if (callback!=null) {
                    callback.onCompletion(response);
                }
View Full Code Here


                request.transportBackChannel = tbc;
                request.endpoint = WSEndpointImpl.this;
                if (wsdlProperties != null) {
                    request.addSatellite(wsdlProperties);
                }
                Fiber fiber = engine.createFiber();
                Packet response;
                try {
                    response = fiber.runSync(tube,request);
                } catch (RuntimeException re) {
                    // Catch all runtime exceptions so that transport doesn't
                    // have to worry about converting to wire message
                    // TODO XML/HTTP binding
                    re.printStackTrace();
View Full Code Here

                        jaxwsAppMsg.setPacket(rc.communicator.createEmptyResponsePacket(request, jaxwsAppMsg.getWsaAction()));
                    }
                }
            }
            // retrieved response is not null
            Fiber oldRegisteredFiber = rc.suspendedFiberStorage.register(_responseMessage.getCorrelationId(), Fiber.current());
            if (oldRegisteredFiber != null) {
                oldRegisteredFiber.resume(rc.protocolHandler.createEmptyAcknowledgementResponse(
                        rc.destinationMessageHandler.getAcknowledgementData(message.getSequenceId()),
                        request));
            }

            return doSuspend(new Runnable() {
View Full Code Here

    public void sendAsync(Packet request, final Fiber.CompletionCallback completionCallback) {
        if (tubelinePool == null)
                    throw new WebServiceException("close method has already been invoked"); // TODO: i18n

        Fiber fiber = engine.createFiber();
        final Tube tube = tubelinePool.take();
        fiber.start(tube, request, new Fiber.CompletionCallback() {
            public void onCompletion(@NotNull Packet response) {
                tubelinePool.recycle(tube);
                completionCallback.onCompletion(response);
            }
View Full Code Here

        Pool<Tube> pool = tubes;
        if (pool == null) {
            throw new WebServiceException("close method has already been invoked"); // TODO: i18n
        }

        Fiber fiber = engine.createFiber();
        configureFiber(fiber);
       
        // then send it away!
        Tube tube = pool.take();

        try {
            return fiber.runSync(tube, packet);
        } finally {
            // this allows us to capture the packet even when the call failed with an exception.
            // when the call fails with an exception it's no longer a 'reply' but it may provide some information
            // about what went wrong.

            // note that Packet can still be updated after
            // ResponseContext is created.
            Packet reply = (fiber.getPacket() == null) ? packet : fiber.getPacket();
            receiver.setResponseContext(new ResponseContext(reply));
           
            pool.recycle(tube);
        }
    }
View Full Code Here

        final Pool<Tube> pool = tubes;
        if (pool == null) {
            throw new WebServiceException("close method has already been invoked"); // TODO: i18n
        }

        final Fiber fiber = engine.createFiber();
        configureFiber(fiber);
       
        receiver.setCancelable(fiber);
       
        // check race condition on cancel
        if (receiver.isCancelled()) {
            return;
        }
       
        FiberContextSwitchInterceptorFactory fcsif = owner.getSPI(FiberContextSwitchInterceptorFactory.class);
        if (fcsif != null) {
            fiber.addInterceptor(fcsif.create());
        }
       
        // then send it away!
        final Tube tube = pool.take();

        Fiber.CompletionCallback fiberCallback = new Fiber.CompletionCallback() {
            @Override
            public void onCompletion(@NotNull Packet response) {
                pool.recycle(tube);
                completionCallback.onCompletion(response);
            }

            @Override
            public void onCompletion(@NotNull Throwable error) {
                // let's not reuse tubes as they might be in a wrong state, so not
                // calling pool.recycle()
                completionCallback.onCompletion(error);
            }
        };

        // Check for SyncStartForAsyncInvokeFeature

        fiber.start(tube, request, fiberCallback,
                        getBinding().isFeatureEnabled(SyncStartForAsyncFeature.class) &&
                        !requestContext.containsKey(PREVENT_SYNC_START_FOR_ASYNC_INVOKE));
    }
View Full Code Here

    private Packet processSecureRequest(PacketMessageInfo info,
  ClientAuthContext cAC, Subject clientSubject)
  throws WebServiceException {
  // send the request
  //Packet response = next.process(info.getRequestPacket());
         Fiber fiber = Fiber.current().owner.createFiber();
         Packet response = fiber.runSync(next, info.getRequestPacket());
       
  // check for response
  Message m = response.getMessage();
  if (m != null) {
      if (cAC != null) {
View Full Code Here

        // Send the message
        Packet respPacket = null;
        if(sctConfig.getClientTube() != null){           
            reqPacket = ((SecurityClientTube)sctConfig.getClientTube()).processClientRequestPacket(reqPacket);
            Tube tubeline = sctConfig.getNextTube();           
            Fiber fiber = getFiberEngine().createFiber();
            respPacket = fiber.runSync(tubeline, reqPacket);
            respPacket = ((SecurityClientTube)sctConfig.getClientTube()).processClientResponsePacket(respPacket);           
        }else{
            WSITClientAuthContext wsitAuthCtx = (WSITClientAuthContext)sctConfig.getOtherOptions().get(MessageConstants.WSIT_CLIENT_AUTHCONTEXT);
            if (wsitAuthCtx != null){
                try{
View Full Code Here

     *      The response from our server, which will be delivered to the destination.
     * @return The response packet that should be used to complete the tubeline response processing
     */
  public Packet process(Packet packet) {
        Fiber.CompletionCallback fiberCallback = null;
        Fiber currentFiber = Fiber.getCurrentIfSet();
        if (currentFiber != null) {
            // Link completion of the current fiber to the new fiber that will
            // deliver the async response. This allows access to the response
            // packet that may be generated by sending a new message for the
            // current async response.

          final Fiber.CompletionCallback currentFiberCallback =
              currentFiber.getCompletionCallback();
         
      if (currentFiberCallback != null) {
              fiberCallback = new Fiber.CompletionCallback() {
              public void onCompletion(@NotNull Packet response) {
                currentFiberCallback.onCompletion(response);
              }
   
              public void onCompletion(@NotNull Throwable error) {
                currentFiberCallback.onCompletion(error);
              }
            };
            currentFiber.setCompletionCallback(null);
          }
        }

        // we need to assemble a pipeline to talk to this endpoint.
    WSEndpoint<?> endpoint = packet.endpoint;
    WSBinding binding = endpoint.getBinding();
        Tube transport = TransportTubeFactory.create(Thread.currentThread().getContextClassLoader(),
            new ClientTubeAssemblerContext(
                packet.endpointAddress, endpoint.getPort(), (WSService) null,
                binding, endpoint.getContainer(),
                ((BindingImpl) binding).createCodec(), null, null));
        Fiber fiber = endpoint.getEngine().createFiber();
        fiber.start(transport, packet, fiberCallback);
       
        // then we'll proceed the rest like one-way.
        Packet copy = packet.copy(false);
        copy.endpointAddress = null;
       
View Full Code Here

                        jaxwsAppMsg.setPacket(rc.communicator.createEmptyResponsePacket(request, jaxwsAppMsg.getWsaAction()));
                    }
                }
            }
            // retrieved response is not null
            Fiber oldRegisteredFiber = rc.suspendedFiberStorage.register(_responseMessage.getCorrelationId(), Fiber.current());
            if (oldRegisteredFiber != null) {
                oldRegisteredFiber.resume(rc.protocolHandler.createEmptyAcknowledgementResponse(
                        rc.destinationMessageHandler.getAcknowledgementData(message.getSequenceId()),
                        request));
            }

            return doSuspend(new Runnable() {
View Full Code Here

TOP

Related Classes of com.sun.xml.ws.api.pipe.Fiber

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.