wrs*_*der 12 model-view-controller spring ejb
我正在使用Spring MVC 3.0创建一个新的Java webapp,并希望尽可能多地使用标准的Java EE 6.(我在使用Glassfish 3.1.1.)真正的驱动程序是想要使用MVC Web框架而不是JSF.
所以我正在寻找将EJB注入Spring控制器的最佳方法.我取得了一些成功,但我对它的外观并不满意,我希望找到更好的方法.
通过JNDI查找EJB,这很有效:
// EJB
@Stateless
public class Service {
@PersistenceContext(name="MAIN")
private EntityManager em;
public void doSomething() { .... }
}
// Spring
@Controller
public class HomeController {
@EJB(mappedName="java:global/springtest/Service")
private Service service;
// controller methods use service
}
Run Code Online (Sandbox Code Playgroud)
但是我对控制器中需要@EJB注释的"mappedName"感到不满意.
有一个更好的方法吗?
但好消息是,我可以在EJB和Spring bean中使用相同的@Inject注释,唯一的区别是哪个框架正在创建对象并进行注入.
MaD*_*aDa -1
对于 Spring,您可以将 JNDI 查找包装到JndiObjectFactoryBean:
<bean id="serviceBean" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:global/springtest/Service" />
<property name="resourceRef" value="true" />
</bean>
Run Code Online (Sandbox Code Playgroud)
然后你可能(如果我错了请纠正我)能够在@Inject 没有注释的情况下使用它@Named("serviceBean"):
@Inject
private Service service;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7583 次 |
| 最近记录: |