我是Java EE的新手,所以这可能是愚蠢的......请耐心等待:D
我想将一个无状态会话bean注入一个消息驱动的bean.基本上,MDB获取JMS消息,然后使用会话bean来执行工作.会话bean保存业务逻辑.
这是我的会话Bean:
@Stateless
public class TestBean implements TestBeanRemote {
public void doSomething() {
// business logic goes here
}
}
Run Code Online (Sandbox Code Playgroud)
匹配界面:
@Remote
public interface TestBeanRemote {
public void doSomething();
}
Run Code Online (Sandbox Code Playgroud)
这是我的MDB:
@MessageDriven(mappedName = "jms/mvs.TestController", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class TestController implements MessageListener {
@EJB
private TestBean testBean;
public TestController() {
}
public void onMessage(Message message) {
testBean.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,还不是火箭科学吧?
不幸的是,当将其部署到glassfish v3并向相应的JMS队列发送消息时,我得到了glassfish无法找到TestBean EJB的错误:
java.lang.IllegalStateException: Exception …Run Code Online (Sandbox Code Playgroud) GlassFish 3.1的托管bean的CDI实现是否支持构造函数注入?我有一个@SingletonEJB,我想使用构造函数注入注入另一个托管bean(包含在同一个EJB模块中).现场注入确实有效.但随着构造器注入我收到了NullPointerException从AbstractSingletonContainer.
这确实有效:
@Singleton
public class FooBean implements Foo {
@Inject private BarBean bar;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用:
@Singleton
public class FooBean implements Foo {
private final BarBean bar;
@Inject
public FooBean(BarBean bar) {
this.bar = bar;
}
}
Run Code Online (Sandbox Code Playgroud) dependency-injection glassfish constructor-injection cdi java-ee-6
好的,仍然试图在这里理解基本的EE 6概念.我希望有人可以帮助我.
我正在使用单个域运行GlassFish v3服务器Kukla.我部署了MyEEApp.ear,它包含MyEEWebApp.war,MyEJBs.jar和MyUtilityLibrary.jar.我的EJB jar包含一个名为MySingleton的@Singleton bean.
然后我设置另一个名为Fran的服务器,并部署相同的EAR.我为第三台服务器做了同样的事情,叫做Ollie.
三个相同的EAR文件部署到三个相同(名称和IP地址除外)服务器.
所以这是我的问题:
我知道,很多问题.对于那个很抱歉!
非常感谢您的帮助!杰夫
我使用基于JDBC表单的安全领域,我想实现注销,但是当我点击链接时,我看到了这个异常:
java.lang.RuntimeException:java.security.AccessControlException:access denied(java.lang.reflect.ReflectPermission suppressAccessChecks)...由以下引起:java.security.AccessControlException:access denied(java.lang.reflect.ReflectPermission suppressAccessChecks)
这是我为执行loggout而创建的EJB:
@Stateless(name = "ejbs/SessionSupportEJBImpl")
@DeclareRoles({"administrators","users"})
public class SessionSupportEJBImpl implements SessionSupportEJB {
@PermitAll
public void releaseUserState() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
if (session != null) {
session.invalidate();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我从一个支持bean调用它:
@Named("logoutBB")
@RequestScoped
public class LogoutBean {
@EJB
private SessionSupportEJB sessionSupportEJB;
public String logout() {
sessionSupportEJB.releaseUserState();
return "index.xhtml?faces-redirect=true";
}
}
Run Code Online (Sandbox Code Playgroud)
这里应该触发它的标记:
<h:form>
<h:commandLink value="LOGOUT" action="#{logoutBB.releaseUserState}"/>
</h:form>
Run Code Online (Sandbox Code Playgroud)
我的怀疑是:
如何使注销功能起作用?
是否必须始终在我的EJB上使用ejbs安全注释来允许访问?(使用安全领域时)
我应该用servlet代替EJB吗?
这种方法是错误的,我应该尝试其他注销吗?
我有一个@StatefulEJB注释为@ConversationScoped.客户端(JSF)向我的EJB发出请求:启动对话 - conversation.begin()执行某些操作并显示对客户端的响应.
然后客户端发出另一个请求,EJB执行某些操作并关闭对话 - conversation.end().
@Stateful会话结束后是否删除了EJB?或者我必须明确打电话@Remove?
我想在我的JPA 2实体上生成本机和便携式id,目前运行Hibernate和MySQL
当使用@GeneratedValue(strategy = AUTO)时,hibernate默认为MySQL上的"hibernate_sequence"表,我想要IDENTITY
如果我使用@GeneratedValue(strategy = IDENTITY)解决它,我将松散Oracle/Postgres可移植性
当@GeneratedValue strategy = AUTO时,如何将Hibernate设置为使用IDENTITY作为mysql的默认值?
我正在做一些重构和审查我们正在开发的应用程序.在这样做时我发现注入了更多的豆子,我认为以懒惰方式装载它们会更适合它们的目的.我使用的是Java EE 6,并且倾向于使用比EJB注入更多的CDI.
所以问题是是否有可能懒得注入豆子,如果是这样,你怎么能这样做?
var是一个静态属性,用于公开当前元素(正文的本地元素)
如何通过scriptlet /表达式访问var属性?
初始化代码
<%
Employee e = new Employee();
e.setName("name");
e.setEmail("abc@gmail.com");
java.util.List<Employee> empList = new java.util.ArrayList();
empList.add(e);
request.setAttribute("empList", empList); %>
Run Code Online (Sandbox Code Playgroud)
forEach code 1 deferredExpression错误
<c:forEach var="emp" items="${employees}">
<c:out value="${emp.name}"/><br><%=emp.getName()%>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
也不
forEach code 2 deferredExpression错误
<c:forEach var="emp" items="${empList}" varStatus="status">
Emp email: <%= ((Employee)(pageContext.findAttribute("emp"))).getName() %>
</c:forEach>
Run Code Online (Sandbox Code Playgroud) 有人遇到以下问题吗?
我能够使用jboss工具在eclipse中的jboss中成功构建,部署和运行我的javaee6应用程序。但是,当我们将其部署在独立运行的另一台服务器上时,出现了错误。我在eclipse所在的同一台机器上尝试过,并在jboss上独立运行,并得到了相同的错误。
看到下面的错误,我已经删除了一些零件。
06:53:46,423 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-/127.0.0.1:8080-1) Transaction cannot proceed STATUS_MARKED_ROLLBACK
06:53:46,424 ERROR [org.jboss.as.ejb3.invocation] (http-/127.0.0.1:8080-1) JBAS014134: EJB Invocation failed on component OfferTemplateServiceApi for method public void org.meveo.asg.api.OfferTemplateServiceApi.preProcessRequest(org.meveo.api.dto.OfferDto) throws org.meveo.api.exception.MeveoApiException: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:114) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:94) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:252) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:339) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:216) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2]
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2]
at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2]
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2]
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final-redhat-2.jar:1.1.1.Final-redhat-2]
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55) [jboss-as-ejb3-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) …Run Code Online (Sandbox Code Playgroud) 通过在无状态会话Bean中使用Singleton会话Bean,是否允许(和良好实践)在我们的应用程序中保存一些共享信息?
SSB将被注入SLSB.
@Stateless
public class MySLSB {
@Inject
MySSB mySSB;
Run Code Online (Sandbox Code Playgroud)
-
@Singleton
@Lock(READ)
public class MySSB implements Serializable {
private static final long serialVersionUID = 1L;
Run Code Online (Sandbox Code Playgroud)