当前位置: 首页>>代码示例>>Java>>正文


Java Pool.take方法代码示例

本文整理汇总了Java中com.sun.xml.internal.ws.util.Pool.take方法的典型用法代码示例。如果您正苦于以下问题:Java Pool.take方法的具体用法?Java Pool.take怎么用?Java Pool.take使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.sun.xml.internal.ws.util.Pool的用法示例。


在下文中一共展示了Pool.take方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: process

import com.sun.xml.internal.ws.util.Pool; //导入方法依赖的package包/类
/**
 * Passes a message to a pipe for processing.
 * <p>
 * Unlike {@link Tube} instances,
 * this method is thread-safe and can be invoked from
 * multiple threads concurrently.
 *
 * @param packet         The message to be sent to the server
 * @param requestContext The {@link RequestContext} when this invocation is originally scheduled.
 *                       This must be the same object as {@link #requestContext} for synchronous
 *                       invocations, but for asynchronous invocations, it needs to be a snapshot
 *                       captured at the point of invocation, to correctly satisfy the spec requirement.
 * @param receiver       Receives the {@link ResponseContext}. Since the spec requires
 *                       that the asynchronous invocations must not update response context,
 *                       depending on the mode of invocation they have to go to different places.
 *                       So we take a setter that abstracts that away.
 */
protected final Packet process(Packet packet, RequestContext requestContext, ResponseContextReceiver receiver) {
    configureRequestPacket(packet, requestContext);
    Pool<Tube> pool = tubes;
    if (pool == null)
        throw new WebServiceException("close method has already been invoked"); // TODO: i18n

    Fiber fiber = engine.createFiber();
    // 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);
    }
}
 
开发者ID:alexkasko,项目名称:openjdk-icedtea7,代码行数:43,代码来源:Stub.java

示例2: processAsync

import com.sun.xml.internal.ws.util.Pool; //导入方法依赖的package包/类
/**
 * Passes a message through a {@link Tube}line for processing. The processing happens
 * asynchronously and when the response is available, Fiber.CompletionCallback is
 * called. The processing could happen on multiple threads.
 *
 * <p>
 * Unlike {@link Tube} instances,
 * this method is thread-safe and can be invoked from
 * multiple threads concurrently.
 *
 * @param request         The message to be sent to the server
 * @param requestContext The {@link RequestContext} when this invocation is originally scheduled.
 *                       This must be the same object as {@link #requestContext} for synchronous
 *                       invocations, but for asynchronous invocations, it needs to be a snapshot
 *                       captured at the point of invocation, to correctly satisfy the spec requirement.
 * @param completionCallback Once the processing is done, the callback is invoked.
 */
protected final void processAsync(Packet request, RequestContext requestContext, final Fiber.CompletionCallback completionCallback) {
    // fill in Packet
    configureRequestPacket(request, requestContext);

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

    Fiber fiber = engine.createFiber();
    // then send it away!
    final Tube tube = pool.take();
    fiber.start(tube, request, new Fiber.CompletionCallback() {
        public void onCompletion(@NotNull Packet response) {
            pool.recycle(tube);
            completionCallback.onCompletion(response);
        }
        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);
        }
    });
}
 
开发者ID:alexkasko,项目名称:openjdk-icedtea7,代码行数:41,代码来源:Stub.java

示例3: process

import com.sun.xml.internal.ws.util.Pool; //导入方法依赖的package包/类
/**
 * Passes a message to a pipe for processing.
 * <p>
 * Unlike {@link Tube} instances,
 * this method is thread-safe and can be invoked from
 * multiple threads concurrently.
 *
 * @param packet         The message to be sent to the server
 * @param requestContext The {@link RequestContext} when this invocation is originally scheduled.
 *                       This must be the same object as {@link #requestContext} for synchronous
 *                       invocations, but for asynchronous invocations, it needs to be a snapshot
 *                       captured at the point of invocation, to correctly satisfy the spec requirement.
 * @param receiver       Receives the {@link ResponseContext}. Since the spec requires
 *                       that the asynchronous invocations must not update response context,
 *                       depending on the mode of invocation they have to go to different places.
 *                       So we take a setter that abstracts that away.
 */
protected final Packet process(Packet packet, RequestContext requestContext, ResponseContextReceiver receiver) {
    packet.isSynchronousMEP = true;
    packet.component = this;
    configureRequestPacket(packet, requestContext);
    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);
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:48,代码来源:Stub.java

示例4: processAsync

import com.sun.xml.internal.ws.util.Pool; //导入方法依赖的package包/类
/**
 * Passes a message through a {@link Tube}line for processing. The processing happens
 * asynchronously and when the response is available, Fiber.CompletionCallback is
 * called. The processing could happen on multiple threads.
 *
 * <p>
 * Unlike {@link Tube} instances,
 * this method is thread-safe and can be invoked from
 * multiple threads concurrently.
 *
 * @param receiver       The {@link Response} implementation
 * @param request         The message to be sent to the server
 * @param requestContext The {@link RequestContext} when this invocation is originally scheduled.
 *                       This must be the same object as {@link #requestContext} for synchronous
 *                       invocations, but for asynchronous invocations, it needs to be a snapshot
 *                       captured at the point of invocation, to correctly satisfy the spec requirement.
 * @param completionCallback Once the processing is done, the callback is invoked.
 */
protected final void processAsync(AsyncResponseImpl<?> receiver, Packet request, RequestContext requestContext, final Fiber.CompletionCallback completionCallback) {
    // fill in Packet
    request.component = this;
    configureRequestPacket(request, requestContext);

    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));
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:68,代码来源:Stub.java

示例5: handle

import com.sun.xml.internal.ws.util.Pool; //导入方法依赖的package包/类
/**
 * Receives the incoming HTTP connection and dispatches
 * it to JAX-WS. This method returns when JAX-WS completes
 * processing the request and the whole reply is written
 * to {@link WSHTTPConnection}.
 *
 * <p>
 * This method is invoked by the lower-level HTTP stack,
 * and "connection" here is an HTTP connection.
 *
 * <p>
 * To populate a request {@link com.sun.xml.internal.ws.api.message.Packet} with more info,
 * define {@link com.oracle.webservices.internal.api.message.PropertySet.Property properties} on
 * {@link WSHTTPConnection}.
 *
 * @param connection to receive/send HTTP messages for web service endpoints
 * @throws java.io.IOException when I/O errors happen
 */
public void handle(@NotNull WSHTTPConnection connection) throws IOException {
    if (handleGet(connection)) {
        return;
    }

    // Make sure the Toolkit is recycled by the same pool instance from which it was taken
    final Pool<HttpToolkit> currentPool = getPool();
    // normal request handling
    final HttpToolkit tk = currentPool.take();
    try {
        tk.handle(connection);
    } finally {
        currentPool.recycle(tk);
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:34,代码来源:HttpAdapter.java

示例6: handle

import com.sun.xml.internal.ws.util.Pool; //导入方法依赖的package包/类
/**
 * Receives the incoming HTTP connection and dispatches
 * it to JAX-WS. This method returns when JAX-WS completes
 * processing the request and the whole reply is written
 * to {@link WSHTTPConnection}.
 *
 * <p>
 * This method is invoked by the lower-level HTTP stack,
 * and "connection" here is an HTTP connection.
 *
 * <p>
 * To populate a request {@link Packet} with more info,
 * define {@link PropertySet.Property properties} on
 * {@link WSHTTPConnection}.
 *
 * @param connection to receive/send HTTP messages for web service endpoints
 * @throws IOException when I/O errors happen
 */
public void handle(@NotNull WSHTTPConnection connection) throws IOException {
    if (handleGet(connection)) {
        return;
    }

    // Make sure the Toolkit is recycled by the same pool instance from which it was taken
    final Pool<HttpToolkit> currentPool = getPool();
    // normal request handling
    final HttpToolkit tk = currentPool.take();
    try {
        tk.handle(connection);
    } finally {
        currentPool.recycle(tk);
    }
}
 
开发者ID:alexkasko,项目名称:openjdk-icedtea7,代码行数:34,代码来源:HttpAdapter.java


注:本文中的com.sun.xml.internal.ws.util.Pool.take方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。