1 /***
2 * @(#)ServiceLocator.java
3 *
4 * JFoxSOAF, Service-Oriented Application Framework
5 *
6 * Copyright(c) JFoxSOAF Team
7 *
8 * Licensed under the GNU LGPL, Version 2.1 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.gnu.org/copyleft/lesser.html
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 * For more information, please visit:
21 * http://www.jfox.cn/confluence/display/JFoxSOAF/Home
22 * http://www.huihoo.org/jfox/jfoxsoaf
23 */
24
25 package org.huihoo.jfox.soaf.services.ejb;
26
27 import java.net.URL;
28 import java.rmi.Remote;
29
30 import javax.ejb.EJBHome;
31 import javax.ejb.EJBLocalHome;
32 import javax.jms.ConnectionFactory;
33 import javax.jms.Destination;
34 import javax.jms.Queue;
35 import javax.jms.QueueConnectionFactory;
36 import javax.jms.Topic;
37 import javax.jms.TopicConnectionFactory;
38 import javax.mail.Session;
39 import javax.sql.DataSource;
40 import javax.transaction.UserTransaction;
41
42 import org.huihoo.jfox.soaf.exception.ServiceLocatorException;
43
44 /***
45 * <p>
46 * This class is an implementation of the Service Locator pattern. It is used to
47 * looukup resources such as EJBHomes, JMS Destinations, etc. This
48 * implementation uses the "singleton instance" strategy and also the "caching"
49 * strategy.
50 * </p>
51 *
52 * @author <a href="mailto:founder_chen@yahoo.com.cn">Peter Cheng </a>
53 * @version $Revision: 1.10 $ $Date: 2005/05/22 06:49:31 $
54 * @version Revision: 1.0
55 */
56
57 public interface ServiceLocator {
58
59 /***
60 * will get the ejb Local home factory. If this ejb home factory has already
61 * been clients need to cast to the type of EJBHome they desire
62 *
63 * @return the EJB Home corresponding to the homeName
64 */
65 public EJBLocalHome getLocalHome(String jndiHomeName)
66 throws ServiceLocatorException;
67
68 /***
69 * will get the ejb Remote home factory. If this ejb home factory has
70 * already been clients need to cast to the type of EJBHome they desire
71 *
72 * @return the EJB Home corresponding to the homeName
73 */
74 public EJBHome getRemoteHome(String jndiHomeName, Class className)
75 throws ServiceLocatorException;
76
77 /***
78 * @return the factory for the factory to get queue connections from
79 */
80 public QueueConnectionFactory getQueueConnectionFactory(
81 String qConnFactoryName) throws ServiceLocatorException;
82
83 /***
84 * @return the Queue Destination to send messages to
85 */
86 public Queue getQueue(String queueName) throws ServiceLocatorException;
87
88 /***
89 * This method helps in obtaining the topic factory
90 *
91 * @return the factory for the factory to get topic connections from
92 */
93 public TopicConnectionFactory getTopicConnectionFactory(
94 String topicConnFactoryName) throws ServiceLocatorException;
95
96 /***
97 * This method helps in obtaining the unified factory.
98 *
99 * @return the unified factory to get connections from
100 */
101 public ConnectionFactory getJMSConnectionFactory(String ConnFactoryName)
102 throws ServiceLocatorException;
103
104 /***
105 * This method helps in obtianing hte unified destination.
106 *
107 * @return the Destination to send messages to
108 */
109 public Destination getJMSDestination(String destName)
110 throws ServiceLocatorException;
111
112 /***
113 * This method obtains the topc itself for a caller
114 *
115 * @return the Topic Destination to send messages to
116 */
117 public Topic getTopic(String topicName) throws ServiceLocatorException;
118
119 /***
120 * This method obtains the datasource itself for a caller
121 *
122 * @return the DataSource corresponding to the name parameter
123 */
124 public DataSource getDataSource(String dataSourceName)
125 throws ServiceLocatorException;
126
127 /***
128 * This method obtains the mail seesion itself for a caller
129 *
130 * @return the Session corresponding to the name parameter
131 */
132 public Session getMailSession(String mailSessionName)
133 throws ServiceLocatorException;
134
135 /***
136 * This method obtains the UserTransaction itself for a caller
137 *
138 * @return the UserTransaction corresponding to the name parameter
139 */
140 public UserTransaction getUserTransaction(String utName)
141 throws ServiceLocatorException;
142
143 /***
144 * @return the URL value corresponding to the env entry name.
145 */
146 public URL getUrl(String envName) throws ServiceLocatorException;
147
148 /***
149 * @return the boolean value corresponding to the env entry such as
150 * SEND_CONFIRMATION_MAIL property.
151 */
152 public boolean getBoolean(String envName) throws ServiceLocatorException;
153
154 /***
155 * @return the String value corresponding to the env entry name.
156 */
157 public String getString(String envName) throws ServiceLocatorException;
158
159 /***
160 * Service class acts as a factory of the Dynamic proxy for the target
161 * service endpoint.
162 *
163 * @see java.xml.rpc.Service.java
164 * @return the Service instance
165 */
166 public Remote getServicePort(String jndiHomeName, Class className)
167 throws ServiceLocatorException;
168
169 }