我正在尝试将用Scala编写的EJB部署到应用服务器。
如果我创建一个无状态会话bean并给它一个(远程)接口,那么它工作正常(接口是一个特征)。
问题是当我想用NO接口创建无状态会话bean时。在Glassfish和JBoss上我都收到错误。如果我将代码转换为Java,那么我没有问题。
Glassfish 3.1.1: IllegalArgumentException:无法将ejb.MyScalaEJB2Bean字段ch.maxant.produkte.web.scala.Bhf better2.scalaEjb2NoInterface设置为$ Proxy290
JBoss 7.0.2.Final: IllegalArgumentException:无法将ejb.MyScalaEJB2Bean字段ch.maxant.produkte.web.scala.Bhf.spalaEjb2NoInterface设置为scala.ScalaObject $$$ view4
EJB源代码是:
package ch.maxant.produkte.ejb.scala
@Stateless(name = "ScalaTestBean2", mappedName = "ScalaTestBean2")
class MyScalaEJB2Bean {
def doStuff(x: String): String = {
"hello " + x + ", this is a scala EJB"
}
}
需要EJB注入的Servlet具有以下源:
package ch.maxant.produkte.web.scala;
@WebServlet(urlPatterns = Array("/BhfSuche2"))
@SerialVersionUID(1L)
class BhfSuche2 extends HttpServlet {
@EJB(lookup="java:global/ProdukteEAR/ProdukteScala/ScalaTestBean2")
var scalaEjb2NoInterface: MyScalaEJB2Bean = null
@throws(classOf[ServletException])
@throws(classOf[IOException])
override def doGet(request: HttpServletRequest, response: HttpServletResponse):Unit = {
val msg2 = scalaEjb2NoInterface.doStuff("ScalaWebServlet")
response.getWriter.write(msg2 + "\r")
}
}
为什么我会收到这些错误,我能做些什么吗?
干杯,
蚂蚁
答案 0 :(得分:0)
固定。
将@LocalBean
添加到bean impl,就在@Stateless
之后。