KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > jndi > url > java > javaURLContextFactory


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6
7 package org.jfox.jndi.url.java;
8
9 import java.util.Hashtable JavaDoc;
10 import javax.naming.Context JavaDoc;
11 import javax.naming.Name JavaDoc;
12 import javax.naming.spi.ObjectFactory JavaDoc;
13
14 import org.jfox.jndi.ContextImpl;
15 import org.jfox.jndi.JNDIProperties;
16
17 /**
18  * performed when use Reference with it's RefAddr is StringRefAddr,type is URL, content is "java://.."
19  *
20  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
21  */

22
23 public class javaURLContextFactory implements ObjectFactory JavaDoc {
24     public Object JavaDoc getObjectInstance(Object JavaDoc obj,
25                                     Name JavaDoc name,
26                                     Context JavaDoc nameCtx,
27                                     Hashtable JavaDoc environment)
28             throws Exception JavaDoc {
29
30         if(obj == null) obj = JNDIProperties.PROVIDER_URL + "/";
31         if(obj instanceof String JavaDoc) {
32             String JavaDoc url = (String JavaDoc) obj;
33
34             int index = url.indexOf('/', url.indexOf("://") + 4); // 去除后面的路径
35

36             String JavaDoc provider = url.substring(0, index);
37
38             if(provider.indexOf(':', provider.indexOf(":") + 2) < 0) { // 没有 port
39
provider += ":" + JNDIProperties.DEFAULT_PORT;
40             }
41
42             Hashtable JavaDoc env = (Hashtable JavaDoc) environment.clone();
43             env.put(Context.PROVIDER_URL, provider);
44             ContextImpl context = new ContextImpl("/", env);
45             return context;
46         }
47         else {
48             return null;
49         }
50     }
51
52 }
53
Popular Tags