使用JNDI显式设置Context
File: HelloServiceBean.java
import javax.ejb.Stateless;
@Stateless
public class HelloServiceBean implements HelloServiceLocal, HelloServiceRemote {
public String sayHello(String name) {
return "Hello1, " + name;
}
}
File: HelloServiceLocal.java
import javax.ejb.Local;
@Local
public interface HelloServiceLocal {
public String sayHello(String name);
}
File: HelloServiceRemote.java
import javax.ejb.Remote;
@Remote
public interface HelloServiceRemote{
public String sayHello(String name);
}
File: jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
File: Main.java
import java.util.*;
import javax.naming.*;
public class Main{
public static void main(String[] a) throws Exception{
/* get a initial context. By default the settings in the file
* jndi.properties are used.
* You can explicitly set up properties instead of using the file.
*
Properties properties = new Properties();
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","=org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url","localhost:1099");
*/
String name = "java2s";
HelloServiceRemote service = null;
//Context compEnv = (Context) new InitialContext().lookup("java:comp/env");
//service = (HelloService)new InitialContext().lookup("java:comp/env/ejb/HelloService");
service = (HelloServiceRemote)new InitialContext().lookup("HelloServiceBean/remote");
System.out.println(service.sayHello(name));
}
}
分享到:
相关推荐
为了解决这一问题,可以通过显式设置环境属性来创建`InitialContext`实例: ```java Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); env....
将`jndi.jar`复制到`%JAVA_HOME%\jre\lib\ext`目录下,意味着将其设置为全局扩展,这样所有使用该JRE的Java应用都可以默认访问JNDI功能。 在实际应用中,JNDI常用于以下场景: - 数据源管理:通过JNDI查找数据库...
在非Java EE环境中,或者你希望在代码中显式地查找JNDI资源,可以使用`InitialContext`类的`lookup`方法。这通常需要你提供完整的JNDI上下文路径,例如在Glassfish服务器上: ```java Properties props = new ...
为了在Hibernate配置中使用JNDI DataSource,需要在`hibernate.cfg.xml`文件中指定相关设置: ```xml <!-- 其他配置 --> <property name="connection.provider_class">org.hibernate.connection.C3P0...
- EJB的注入(@EJB注解):在Java EE 5及以上版本,可以使用`@EJB`注解将EJB直接注入到客户端或另一个EJB中,这样就不再需要显式使用JNDI查找。 - CDI(Contexts and Dependency Injection)与JNDI:在更现代的...
可以同时使用`<property>`元素为特定属性进行显式装配,显式装配会覆盖自动装配。然而,当使用`constructor`自动装配时,不应混用`<constructor-arg>`元素。 二、注解装配 从Spring 2.5开始,可以通过注解来自动...
在开发过程中,你可能需要添加更多的配置,如设置JNDI资源、调整日志级别、启用AJP连接器等。这些可以通过调用`Tomcat`对象的相关方法来完成。例如,添加一个JNDI资源可以这样做: ```java Context context = ...
接着,在JSP页面或Servlet中,我们可以通过Java的JNDI(Java Naming and Directory Interface)查找来获取数据源: ```java Context initContext = new InitialContext(); Context envContext = (Context)...
- **使用JNDI**:通过Java命名和目录接口(JNDI)查找并获取DataSource对象。 2. **连接池配置**: - **配置文件**:在Tomcat的conf/context.xml中配置数据库连接池。 - **属性详解**: - `name`:指定Resource...
- 容器管理的实体管理器(Container-Managed EntityManager):在这种模式下,`Persistence Context`的生命周期由容器管理,当`EntityManager`被注入或通过JNDI查找时,其`Persistence Context`会在当前事务范围内...
现在,除非显式启用,否则JNDI解析器不会被加载。 2. 日志格式字符串限制:新版本对日志格式字符串的处理进行了增强,限制了可能导致安全问题的特殊字符和表达式。 3. 安全更新:除了上述直接的修复措施,Log4j ...
需要显式地在`setUserLocale`方法中设置locale,如:`context.getViewRoot().setLocale(locale)`。 以上这些问题和解决方案都是在实践中积累的经验,对于CDI+JSF2.0项目在WebSphere 8.5环境下的部署和运行至关重要...
- **属性文件**:使用`<context:property-placeholder location="..."/>`引入属性文件,通过`${propKey}`方式引用。 3. **自动装配** - **byName**:通过属性名自动寻找匹配的bean。 - **byType**:根据类型自动...
Spring Context:提供框架式的 Bean 访问方式,以及企业级功能(JNDI、定时任务等);Spring AOP:AOP 服务;Spring DAO:对 JDBC 的抽象,简化了数据访问异常的处理;Spring ORM:对现有的 ORM 框架的支持;Spring ...
此外,Logger还支持**级别继承**,即子Logger如果没有显式设置级别,将继承父Logger的级别。 Log4j支持以下**输出级别**: - DEBUG:用于调试信息,通常包含详细的内部状态和流程。 - INFO:常规信息,用于追踪...
- 客户端确认:接收者需要显式调用`acknowledge()`方法确认消息已被处理。 - 无确认:在Session的DURABLE_SUBSCRIPTION模式下,消息直到重新订阅才会被确认。 JMS通过提供这些组件和模式,使得分布式系统中的异步...
如果JSP页面不需要使用HttpSession,可以在页面顶部加入`<%@ page session="false" %>`指令来显式禁用。 2. **避免在HttpSession中存放大数据对象:** 如果必须存储大数据对象,请考虑使用其他机制(如数据库)来...
Context envCtx = (Context) ic.lookup("java:comp/env"); HelloSessionBeanRemote helloSessionBean = (HelloSessionBeanRemote) envCtx.lookup("HelloSessionBeanBean"); ``` 3. **Java客户端**:需要引入相关...
通过标注如@Resource、@EJB和@WebServiceRef,开发者可以声明性地请求和注入所需的资源,如SessionContext、DataSource等,而不必在代码中显式创建和查找。这有助于降低组件之间的耦合,提高代码的可测试性。 Java ...
在J2EE环境下,你可能需要配置Java的DataSource,这通常在应用服务器的配置文件(如Tomcat的context.xml或WebLogic的weblogic.xml)中完成,然后在Java代码中通过JNDI查找获取DataSource对象。 总的来说,`sqljdbc_...