1 29 30 package com.caucho.quercus.lib.jms; 31 32 import com.caucho.quercus.QuercusModuleException; 33 import com.caucho.quercus.annotation.ClassImplementation; 34 import com.caucho.quercus.env.Env; 35 import com.caucho.quercus.env.StringValue; 36 import com.caucho.quercus.module.AbstractQuercusModule; 37 import com.caucho.util.L10N; 38 39 import javax.jms.*; 40 import javax.naming.Context ; 41 import javax.naming.InitialContext ; 42 import java.util.HashMap ; 43 import java.util.Map ; 44 import java.util.logging.Logger ; 45 46 49 @ClassImplementation 50 public class JMSModule extends AbstractQuercusModule 51 { 52 private static final Logger log 53 = Logger.getLogger(JMSModule.class.getName()); 54 55 private static final L10N L = new L10N(JMSModule.class); 56 57 private static final HashMap <String ,StringValue> _iniMap 58 = new HashMap <String ,StringValue>(); 59 60 private ConnectionFactory _connectionFactory = null; 61 62 65 public Map <String ,StringValue> getDefaultIni() 66 { 67 return _iniMap; 68 } 69 70 static JMSQueue message_get_queue(Env env, String queueName, 71 ConnectionFactory connectionFactory) 72 { 73 if (connectionFactory == null) 74 connectionFactory = getConnectionFactory(env); 75 76 if (connectionFactory == null) { 77 env.warning(L.l("No connection factory")); 78 return null; 79 } 80 81 try { 82 Destination queue = null; 83 84 if (queueName != null && ! queueName.equals("")) 85 queue = (Destination) new InitialContext ().lookup("java:comp/env/" + queueName); 86 87 return new JMSQueue(connectionFactory, queue); 88 } catch (Exception e) { 89 env.warning(e); 90 91 return null; 92 } 93 } 94 95 private static ConnectionFactory getConnectionFactory(Env env) 96 { 97 StringValue factoryName = env.getIni("jms.connection_factory"); 98 99 if (factoryName == null) 100 log.fine("jms.connection_factory not set"); 101 102 try { 103 Context context = (Context ) new InitialContext ().lookup("java:comp/env"); 104 105 ConnectionFactory connectionFactory = 106 (ConnectionFactory) context.lookup(factoryName.toString()); 107 108 if (connectionFactory == null) 109 log.warning("Couldn't find factory " + factoryName.toString()); 110 111 return connectionFactory; 112 } catch (RuntimeException e) { 113 throw e; 114 } catch (Exception e) { 115 throw new QuercusModuleException(e); 116 } 117 } 118 119 static { 120 addIni(_iniMap, "jms.connection_factory", 121 "jms/ConnectionFactory", PHP_INI_SYSTEM); 122 } 123 } 124 125 | Popular Tags |