开发中有一个新项目需要调用现存的EJB服务,新项目有Spring容器,参考文档后使用JNDI方式请求EJB服务。解决思路如下。
首先是配置JNDI服务的属性文件,application.local.properties。
#########################################################
# JNDI
#########################################################
naming.initial=org.jnp.interfaces.NamingContextFactory
naming.pkgs=org.jboss.naming:org.jnp.interfaces
naming.root=sg-service-ear-1.0.0-M3-SNAPSHOT
naming.url=jnp://172.16.0.55:1099
naming.root是ejb发布后的服务名。naming.url是EJB服务地址,1099是默认端口。
在Spring配置文件applicationContext.xml中引入该属性文件
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<!-- 本地开发 -->
<value>classpath:application.local.properties</value>
<!-- 服务器环境 -->
<value>file:/var/mms/application.server.properties</value>
</list>
</property>
</bean>
加入一个配置文件管理商业接口 modules-remote.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd">
<util:map id="jndiEnv">
<entry key="java.naming.factory.initial" value="${naming.initial}" />
<entry key="java.naming.factory.url.pkgs" value="${naming.pkgs}" />
<entry key="java.naming.provider.url" value="${naming.url}" />
</util:map>
<jee:remote-slsb id="orderInfoService"
jndi-name="${naming.root}/OrderInfoServiceBean/remote"
business-interface="com.test.trade.service.OrderInfoService"
resource-ref="true" cache-home="true" lookup-home-on-startup="false"
environment-ref="jndiEnv">
</jee:remote-slsb>
</beans>
OrderInfoService是一个商业接口,OrderInfoServiceBean是一个具体的实现。
开发中注入这个远程接口即可
private OrderInfoService _orderInfoService;
@Autowired
public void setOrderInfoService(OrderInfoService orderInfoService) {
_orderInfoService = orderInfoService;
}
为了应用以上服务需要导入一些Jboss的jar包,因为没有使用maven,手动引入以下jar包
jbossall-client.jar
jboss-aspect-library-jdk50.jar
jboss-ejb3x.jar
以上jar在{JBOSS_ROOT}/client 下都可以找到。
have fun fellows.
分享到:
相关推荐
ApplicationContext则进一步扩展了BeanFactory,提供了一个包含企业服务如JNDI、EJB等的上下文环境。 2. **Spring上下文**:Spring上下文是一个配置容器,它包含了应用程序运行所需的上下文信息。这个上下文不仅...
Struts2、Spring和EJB3是Java Web开发中的三个重要框架,它们分别在MVC模式、依赖注入和企业级服务方面发挥着关键作用。这个压缩包提供的源代码是一个完整的项目示例,展示了如何将这三个框架集成到一个应用程序中。...
这是一个基于Java技术栈的银行系统实现,主要利用了EJB3.0、Spring和Struts框架,这三者是企业级Java应用开发中常见的核心技术。EJB(Enterprise JavaBeans)3.0是Java EE平台的核心组件之一,用于构建可复用的、...
可以利用Spring的JNDI_lookup标签或者`jee:jndi-lookup`元素来查找并注入JNDI资源,例如数据源。这样,Spring管理的bean可以直接使用由JNDI查找得到的数据源。 3. **Hibernate:** Hibernate作为ORM框架,用于对象-...
这种方式下,EJB和Web应用之间的通信可以通过RMI(远程方法调用)或JNDI(Java命名和目录接口)实现。 SSE入门程序的配置文件,比如struts.xml、spring-context.xml和ejb-jar.xml,是理解和学习整合的关键。struts...
在EJB3.0中,这两种注解使接口的使用更加灵活,无需传统的接口实现方式。 总的来说,EJB3.0简化了传统EJB的复杂性,提升了开发效率,同时保持了企业级应用所需的关键特性。通过注解、容器管理和事务支持,EJB3.0...
Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring ...
在ejb3.0时代,许多框架如Hibernate(持久层)、Spring(依赖注入和事务管理)和CDI(Contexts and Dependency Injection)被广泛使用,它们与EJB结合,提供了更强大的开发能力。 总之,EJB调用是一个涉及服务器...
在基础IOC功能上提供扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位,EJB集成、远程访问、缓存以及多种视图层框架的支持。这个jar 文件为Spring 核心提供了大量扩展。可以找到使用...
虽然EJB在过去是企业级Java开发的首选,但随着Spring、Quarkus等轻量级框架的崛起,EJB的应用逐渐减少。这些框架提供了更灵活的编程模型,降低了复杂性,同时也保留了EJB的部分核心特性,如依赖注入、事务管理等。 ...
2. **EJB 服务器**:EJB 服务器是一个高级进程,它管理一个或多个EJB容器,并提供对系统服务的访问,比如JNDI(Java Naming and Directory Interface)和事务服务。服务器还可能包含特定于供应商的功能,如数据库...
4. **配置JNDI**:设置命名服务,使得客户端能够查找并访问EJB组件。 5. **测试与调试**:确保应用按预期工作。 #### 五、JPA在容器内外的使用方法 JPA(Java Persistence API)是一种Java EE标准,用于管理关系型...
- **JNDI(Java Naming and Directory Interface)**:理解如何通过JNDI查找和绑定EJB。 - **JTA(Java Transaction API)**和JMS:了解这两个API在EJB中的应用。 - **测试和调试EJB**:掌握如何使用JUnit和其他工具...
第8章 Spring和基于POJO的远程服务 8.1 Spring远程调用概览 8.2 与RMI一起工作 8.2.1 连接RMI服务 8.2.2 输出RMI服务 8.3 使用Hessian和Burlap的远程调用 8.3.1 访问Hessian/Burlap服务 8.3.2 用Hessian或...
- **JNDI (Java Naming and Directory Interface)**:实现了查找和定位服务的命名服务接口,包括本地和远程服务。 - **JMS (Java Message Service)**:提供了消息传递机制,用于解耦应用程序组件,支持点对点和发布/...
- **上下文**:提供了一个配置文件,允许 Spring 与外部系统进行交互,例如 JNDI、EJB、邮件服务等。 - **AOP**:提供了面向切面编程的支持,使得开发者可以方便地在 Spring 管理的对象中实现 AOP 功能。 - **DAO ...
本资料包"基于Java的EJB中有、无状态SessionBean的两个例子.zip"包含的是关于有状态和无状态SessionBean的实例代码,帮助开发者理解和掌握这两种类型SessionBean的用法。 1. **无状态SessionBean(Stateless ...
`jee`目录下的schema涵盖了Java企业版(Java EE)的相关配置,包括JNDI查找、EJB集成、邮件服务等。通过这些schema,开发者可以轻松地将Spring应用与Java EE服务器进行整合,实现企业级功能。 `jdbc`目录的schema...
"jee"(Java Enterprise Edition)模块展示了Spring对企业级应用的支持,如JNDI查找、EJB集成、邮件服务等,使得Spring能够无缝融入Java EE环境。 总结来说,"spring-framework-4.3.30.RELEASE-schema.zip"这个...
你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务...