"type" 在 jsp 中使用 ejb 时无法解析为类型
"type" cannot be resolved to a type, while using ejb in jsp
我用的是 eclipse Neon。
我使用以下代码创建了简单的 EJB 项目:
package com.clientManager;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
/**
* Session Bean implementation class ClientManager
*/
@Stateless
@LocalBean
public class ClientManager {
/**
* Default constructor.
*/
public ClientManager() {
// TODO Auto-generated constructor stub
}
public String test() {
return "test";
}
}
它自动创建并驻留在 ejbModule 文件夹中。
它使用 EJB 3.2 并在 WildFly 服务器上成功部署:
11:25:50,360 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0028: Stopped deployment Neoflex.jar (runtime-name: Neoflex.jar) in 9ms
11:25:50,370 WARN [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0357: Notification of type deployment-undeployed is not described for the resource at the address []
11:25:50,370 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0009: Undeployed "Neoflex.jar" (runtime-name: "Neoflex.jar")
11:25:55,380 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0004: Found Neoflex.jar in deployment directory. To trigger deployment create a file called Neoflex.jar.dodeploy
11:25:55,380 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0027: Starting deployment of "Neoflex.jar" (runtime-name: "Neoflex.jar")
11:25:55,400 INFO [org.jboss.weld.deployer] (MSC service thread 1-6) WFLYWELD0003: Processing weld deployment Neoflex.jar
11:25:55,400 INFO [org.jboss.as.ejb3.deployment] (MSC service thread 1-6) WFLYEJB0473: JNDI bindings for session bean named 'ClientManager' in deployment unit 'deployment "Neoflex.jar"' are as follows:
java:global/Neoflex/ClientManager!com.clientManager.ClientManager
java:app/Neoflex/ClientManager!com.clientManager.ClientManager
java:module/ClientManager!com.clientManager.ClientManager
java:global/Neoflex/ClientManager
java:app/Neoflex/ClientManager
java:module/ClientManager
11:25:55,523 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "Neoflex.jar" (runtime-name : "Neoflex.jar")
现在我为将使用 EJB 的 JSP 页面创建了 DynamicWebProject:
<%@page import="com.clientManager.*"%>
<%
ClientManager c = new ClientManager();
%>
<%= c.test() %>
我在 JSP 项目的构建路径中配置了 EJB 项目 (!)
请看截图。
当我发布 JSP 并访问页面 (main.jsp) 时,我有:
JBWEB004060: An error occurred at line: 3 in the jsp file: /main.jsp
ClientManager cannot be resolved to a type
1: <%@page import="com.clientManager.*"%>
2: <%
3: ClientManager c = new ClientManager();
4: %>
5: <%= c.test() %>
怎么了?
您不应该直接实例化 EJB bean,而是由 EJB 容器管理它的生命周期,获取 EJB bean 句柄的正确方法是通过它的查找方法。
确保你选择了正确的查找名称,我随机使用了你的 post
尝试更改为如下内容。
<%
ClientManager cm;
cm = (ClientManager) ctx.lookup("java:module/ClientManager");
%>
我用的是 eclipse Neon。
我使用以下代码创建了简单的 EJB 项目:
package com.clientManager;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
/**
* Session Bean implementation class ClientManager
*/
@Stateless
@LocalBean
public class ClientManager {
/**
* Default constructor.
*/
public ClientManager() {
// TODO Auto-generated constructor stub
}
public String test() {
return "test";
}
}
它自动创建并驻留在 ejbModule 文件夹中。
它使用 EJB 3.2 并在 WildFly 服务器上成功部署:
11:25:50,360 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0028: Stopped deployment Neoflex.jar (runtime-name: Neoflex.jar) in 9ms
11:25:50,370 WARN [org.jboss.as.controller] (DeploymentScanner-threads - 2) WFLYCTL0357: Notification of type deployment-undeployed is not described for the resource at the address []
11:25:50,370 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0009: Undeployed "Neoflex.jar" (runtime-name: "Neoflex.jar")
11:25:55,380 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) WFLYDS0004: Found Neoflex.jar in deployment directory. To trigger deployment create a file called Neoflex.jar.dodeploy
11:25:55,380 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) WFLYSRV0027: Starting deployment of "Neoflex.jar" (runtime-name: "Neoflex.jar")
11:25:55,400 INFO [org.jboss.weld.deployer] (MSC service thread 1-6) WFLYWELD0003: Processing weld deployment Neoflex.jar
11:25:55,400 INFO [org.jboss.as.ejb3.deployment] (MSC service thread 1-6) WFLYEJB0473: JNDI bindings for session bean named 'ClientManager' in deployment unit 'deployment "Neoflex.jar"' are as follows:
java:global/Neoflex/ClientManager!com.clientManager.ClientManager
java:app/Neoflex/ClientManager!com.clientManager.ClientManager
java:module/ClientManager!com.clientManager.ClientManager
java:global/Neoflex/ClientManager
java:app/Neoflex/ClientManager
java:module/ClientManager
11:25:55,523 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "Neoflex.jar" (runtime-name : "Neoflex.jar")
现在我为将使用 EJB 的 JSP 页面创建了 DynamicWebProject:
<%@page import="com.clientManager.*"%>
<%
ClientManager c = new ClientManager();
%>
<%= c.test() %>
我在 JSP 项目的构建路径中配置了 EJB 项目 (!)
请看截图。
当我发布 JSP 并访问页面 (main.jsp) 时,我有:
JBWEB004060: An error occurred at line: 3 in the jsp file: /main.jsp
ClientManager cannot be resolved to a type
1: <%@page import="com.clientManager.*"%>
2: <%
3: ClientManager c = new ClientManager();
4: %>
5: <%= c.test() %>
怎么了?
您不应该直接实例化 EJB bean,而是由 EJB 容器管理它的生命周期,获取 EJB bean 句柄的正确方法是通过它的查找方法。
确保你选择了正确的查找名称,我随机使用了你的 post 尝试更改为如下内容。
<%
ClientManager cm;
cm = (ClientManager) ctx.lookup("java:module/ClientManager");
%>