jcacomponent.java
来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 172 行
JAVA
172 行
/* * $Id: JcaComponent.java 12565 2008-08-26 13:49:21Z dirk.olmes $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.module.jca;import org.mule.OptimizedRequestContext;import org.mule.RequestContext;import org.mule.api.MessagingException;import org.mule.api.MuleEvent;import org.mule.api.MuleException;import org.mule.api.component.LifecycleAdapter;import org.mule.api.lifecycle.InitialisationException;import org.mule.api.model.EntryPointResolverSet;import org.mule.api.service.Service;import org.mule.component.AbstractJavaComponent;import org.mule.config.i18n.CoreMessages;import org.mule.config.i18n.Message;import org.mule.module.jca.i18n.JcaMessages;import javax.resource.spi.UnavailableException;import javax.resource.spi.endpoint.MessageEndpoint;import javax.resource.spi.endpoint.MessageEndpointFactory;import javax.resource.spi.work.Work;import javax.resource.spi.work.WorkEvent;import javax.resource.spi.work.WorkListener;import javax.resource.spi.work.WorkManager;public class JcaComponent extends AbstractJavaComponent implements WorkListener{ protected MessageEndpointFactory messageEndpointFactory; protected WorkManager workManager; public JcaComponent(MessageEndpointFactory messageEndpointFactory, EntryPointResolverSet entryPointResolverSet, Service service, WorkManager workManager) { this.messageEndpointFactory = messageEndpointFactory; this.entryPointResolverSet = entryPointResolverSet; this.service = service; this.workManager = workManager; } /* * The service ins actually managed by the Application Server container,Since the * instance might be pooled by the server, we should use the * MessageEndPointFactory to delegate the request for creation to the container. * The container might create a Proxy object to intercept the actual method call * to implement transaction,security related functionalities */ public Object getManagedInstance() throws UnavailableException, MuleException { return messageEndpointFactory.createEndpoint(null); } // @Override public Object doInvoke(MuleEvent event) { try { workManager.scheduleWork(new MuleJcaWorker(event), WorkManager.INDEFINITE, null, this); } catch (Exception e) { logger.error(CoreMessages.failedToInvoke("UMO Service: " + service.getName())); } return null; } public Class getObjectType() { return MessageEndpoint.class; } // @Override protected LifecycleAdapter borrowComponentLifecycleAdaptor() throws Exception { // Template method unused because doOnCall and doOnEvent have been overridden return null; } // @Override protected void returnComponentLifecycleAdaptor(LifecycleAdapter lifecycleAdapter) { // Template method unused because doOnCall and doOnEvent have been overridden } // @Override protected void doInitialise() throws InitialisationException { // no-op no object-factory } public class MuleJcaWorker implements Work { private MuleEvent event; MuleJcaWorker(MuleEvent event) { this.event = event; } public void release() { // TODO Auto-generated method stub } public void run() { if (logger.isTraceEnabled()) { logger.trace("MuleJcaWorker: async MuleEvent for Mule JCA EndPoint " + service.getName()); } try { // Invoke method event = OptimizedRequestContext.criticalSetEvent(event); entryPointResolverSet.invoke(getManagedInstance(), RequestContext.getEventContext()); } catch (Exception e) { if (e instanceof UnavailableException) { Message message = JcaMessages.cannotAllocateManagedInstance(); logger.error(message); service.getExceptionListener().exceptionThrown(new MessagingException(message, e)); } else if (e instanceof MessagingException) { logger.error("Failed to execute JCAEndPoint " + e.getMessage(), e); service.getExceptionListener().exceptionThrown(e); } else { service.getExceptionListener().exceptionThrown( new MessagingException(CoreMessages.eventProcessingFailedFor(service.getName()), e)); } } } } public void workAccepted(WorkEvent arg0) { // TODO Auto-generated method stub } public void workCompleted(WorkEvent arg0) { // TODO Auto-generated method stub } public void workRejected(WorkEvent arg0) { // TODO Auto-generated method stub } public void workStarted(WorkEvent arg0) { // TODO Auto-generated method stub }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?