JABSession.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:3k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. package org.jboss.blacktie.jatmibroker.jab;
  19. import org.apache.log4j.LogManager;
  20. import org.apache.log4j.Logger;
  21. import org.jboss.blacktie.jatmibroker.xatmi.Connection;
  22. import org.jboss.blacktie.jatmibroker.xatmi.ConnectionException;
  23. import org.jboss.blacktie.jatmibroker.xatmi.ConnectionFactory;
  24. /**
  25.  * The JABSession holds a connection to the XATMI server.
  26.  * 
  27.  * @see JABSessionAttributes
  28.  */
  29. public class JABSession {
  30. /**
  31.  * The logger to issue debug statements on
  32.  */
  33. private static final Logger log = LogManager.getLogger(JABSession.class);
  34. /**
  35.  * The attributes to use in respect of this session.
  36.  */
  37. private JABSessionAttributes jabSessionAttributes;
  38. /**
  39.  * The real connection to the server process.
  40.  */
  41. private Connection connection;
  42. /**
  43.  * Create a new connection to the server-side using the state defined in the
  44.  * session attributes
  45.  * 
  46.  * @param attributes
  47.  *            The attributes to use
  48.  * @throws JABException
  49.  *             In case the connection cannot be established
  50.  */
  51. public JABSession(JABSessionAttributes attributes) throws JABException {
  52. log.debug("JABSession constructor");
  53. try {
  54. jabSessionAttributes = attributes;
  55. ConnectionFactory connectionFactory = ConnectionFactory
  56. .getConnectionFactory();
  57. connection = connectionFactory.getConnection();
  58. } catch (Exception e) {
  59. throw new JABException("Error connect to domain: "
  60. + jabSessionAttributes.getProperties().get(
  61. "blacktie.domain.name"), e);
  62. }
  63. }
  64. /**
  65.  * Close the connection with the server
  66.  * 
  67.  * @throws JABException
  68.  *             In case the connection cannot be closed
  69.  */
  70. public void closeSession() throws JABException {
  71. log.debug("JABSession endSession");
  72. try {
  73. connection.close();
  74. } catch (ConnectionException e) {
  75. throw new JABException("Could not close the connection", e);
  76. } finally {
  77. connection = null;
  78. jabSessionAttributes = null;
  79. }
  80. }
  81. /**
  82.  * Has the session been closed yet?
  83.  * 
  84.  * @return True, if the connection is closed
  85.  */
  86. public boolean isConnected() {
  87. return connection != null;
  88. }
  89. /**
  90.  * Get the attributes to use within this session.
  91.  * 
  92.  * @return The sessions attributes
  93.  */
  94. JABSessionAttributes getJABSessionAttributes() {
  95. return jabSessionAttributes;
  96. }
  97. /**
  98.  * Obtain a reference to the connection
  99.  * 
  100.  * @return The connection
  101.  */
  102. Connection getConnection() {
  103. return connection;
  104. }
  105. }