com.ibm.jbatch.container.services.impl.BatchTransactionServiceImpl Maven / Gradle / Ivy
/*
* Copyright 2012 International Business Machines Corp.
*
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership. Licensed under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ibm.jbatch.container.services.impl;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import jakarta.batch.runtime.context.StepContext;
import com.ibm.jbatch.container.exception.BatchContainerServiceException;
import com.ibm.jbatch.container.exception.TransactionManagementException;
import com.ibm.jbatch.container.transaction.impl.DefaultNonTransactionalManager;
import com.ibm.jbatch.container.transaction.impl.JTAUserTransactionAdapter;
import com.ibm.jbatch.spi.services.IBatchConfig;
import com.ibm.jbatch.spi.services.ITransactionManagementService;
import com.ibm.jbatch.spi.services.TransactionManagerAdapter;
public class BatchTransactionServiceImpl implements ITransactionManagementService {
private static final String CLASSNAME = BatchTransactionServiceImpl.class.getName();
private static final Logger logger = Logger.getLogger(CLASSNAME);
/**
* batch configuration properties.
*/
private IBatchConfig batchConfig = null;
/**
* constructor
*/
public BatchTransactionServiceImpl() {
}
/*
* (non-Javadoc)
*
* @see
* com.ibm.jbatch.container.services.IBatchServiceBase#init(com.ibm.batch
* .container.IBatchConfig)
*/
@Override
public void init(IBatchConfig batchConfig) throws BatchContainerServiceException {
logger.entering(CLASSNAME, "init", batchConfig);
this.batchConfig = batchConfig;
logger.exiting(CLASSNAME, "init");
}
/*
* (non-Javadoc)
*
* @see com.ibm.jbatch.container.services.IBatchServiceBase#shutdown()
*/
@Override
public void shutdown() throws BatchContainerServiceException {
logger.entering(CLASSNAME, "shutdown");
logger.fine("do nothing");
logger.exiting(CLASSNAME, "shutdown");
}
/*
* (non-Javadoc)
*
* @see com.ibm.jbatch.container.services.ITransactionManagementService#
* getTransactionManager(jakarta.batch.runtime.context.StepContext)
*/
@Override
public TransactionManagerAdapter getTransactionManager(StepContext stepContext) throws TransactionManagementException {
logger.entering(CLASSNAME, "getTransactionManager", stepContext);
TransactionManagerAdapter transactionManager = null;
// get the JTA tran manager if we are in Java EE
if (! this.batchConfig.isJ2seMode()) {
// use the container JNDI java:comp/UserTransaction
logger.fine("getting transaction object from JNDI java:comp/UserTransaction");
transactionManager = new JTAUserTransactionAdapter("java:comp/UserTransaction");
}
else if (this.batchConfig.isJ2seMode()) {
// If we are in J2SE mode use the non-transactional manager
// java environment is Java SE
// NoOp transaction manager
logger.fine("J2SE mode non-transactional manager");
transactionManager = new DefaultNonTransactionalManager();
}
logger.exiting(CLASSNAME, "getTransactionManager", transactionManager);
return transactionManager;
}
}