我是学习EJB的初学者。我想在netbean 6.7中测试非常小的ejb应用程序。代码如下
package jeenptbeans;
import javax.ejb.Remote;
@Remote
public interface NewSessionRemote {
public String getEchoString(String clientString);
}
package jeenptbeans;
import javax.ejb.Stateless;
@Stateless
public class NewSessionBean implements NewSessionRemote, NewSessionLocal {
public String getEchoString(String clientString) {
return clientString + " - from session bean";
}
public String getdisString(String clientString) {
return clientString + " - from session bean";
}
因此,我创建了File-> New Project-> EJB模块。然后右键单击该项目,然后选择New-> Session bean并添加上面的代码。但是我运行此项目,显示“ build success”消息。要用客户端应用程序测试此bean。因此,我制作了“企业应用程序客户端”应用程序,并按如下所示添加了ejb。
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.naming.NamingException;
import jeenptbeans.NewSessionRemote;
import javax.naming.InitialContext;
import jeenptbeans.NewSessionBean;
public class Main {
@EJB
private static NewSessionRemote newSessionBean;
public static void main(String[] args) {
try {
InitialContext ctx = new InitialContext();
newSessionBean = (NewSessionBean)ctx.lookup(NewSessionBean.class.getName());
for (int i = 0; i < args.length; i++) {
String returnedString = newSessionBean.getEchoString(args[i]);
System.out.println("sent string: " + args[i] +
", received string: " + returnedString);
}
} catch (NamingException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
但是,当我运行此客户端应用程序时,出现以下异常。
“ SEC5046:审核:[admin]的身份验证被拒绝。
Web登录失败:登录失败:javax.security.auth.login.LoginException:管理员的文件登录失败。
CORE5024:EJB模块[JEENPT-SessionEJB1]已成功卸载!
使用moduleid = JEENPT-SessionEJB1部署
** RemoteBusinessJndiName:jeenptbeans.NewSessionRemote; remoteBusIntf:jeenptbeans.NewSessionRemote
LDR5010:[JEENPT-SessionEJB1]的所有ejb已成功加载!
ADM1006:将文件上传到:[C:\ Documents and Settings \ Yamin \ Local Settings \ Temp \ s1astempdomain1server1142715591 \ JEENPT-AppEJBClient1.jar]
找不到类[jeenptbeans / NewSessionRemote]。加载[类jeenptappejbclient1.Main]时出错
注释处理中的错误:java.lang.NoClassDefFoundError:jeenptbeans / NewSessionRemote
使用moduleid = JEENPT-AppEJBClient1部署
注册临时servlet:WebPathPath:上下文根=“ / JEENPT-AppEJBClient1”,路径=“'
为独立应用程序客户端com.sun.enterprise.appclient.jws.AppclientContentOrigin@1bb5013注册的Java Web Start服务已启动注册名称= JEENPT-AppEJBClient1,上下文根= / JEENPT-AppEJBClient1,模块名称=
CORE5024:EJB模块[JEENPT-SessionEJB1]已成功卸载!
使用moduleid = JEENPT-SessionEJB1部署
** RemoteBusinessJndiName:jeenptbeans.NewSessionRemote; remoteBusIntf:jeenptbeans.NewSessionRemote
LDR5010:[JEENPT-SessionEJB1]的所有ejb已成功加载!
classLoader = WebappClassLoader
代表:假
仓库:
---------->父类加载器:
WebappClassLoader
代表:真实
仓库:
/ WEB-INF / classes /
---------->父类加载器:
EJBClassLoader:
urlSet = []
doneCalled =假
父级-> java.net.URLClassLoader@103de90
SharedSecrets.getJavaNetAccess()= java.net.URLClassLoader$7@cf10ae
独立应用程序客户端com.sun.enterprise.appclient.jws.AppclientContentOrigin@1bb5013的Java Web Start服务已结束注册名称= JEENPT-AppEJBClient1,上下文根= / JEENPT-AppEJBClient1,模块名称=
ADM1064:位于[C:\ Documents and Settings \ Yamin \ Local Settings \ Temp \ s1astempdomain1server1142715591 \ JEENPT-AppEJBClient1.jar]的上载文件已存在并将被覆盖。
ADM1006:将文件上传到:[C:\ Documents and Settings \ Yamin \ Local Settings \ Temp \ s1astempdomain1server1142715591 \ JEENPT-AppEJBClient1.jar]
找不到类[jeenptbeans / NewSessionRemote]。加载[类jeenptappejbclient1.Main]时出错
注释处理中的错误:java.lang.NoClassDefFoundError:jeenptbeans / NewSessionRemote
使用moduleid = JEENPT-AppEJBClient1部署
注册临时servlet:WebPathPath:上下文根=“ / JEENPT-AppEJBClient1”,路径=“'
为独立应用程序客户端com.sun.enterprise.appclient.jws.AppclientContentOrigin@db05a8注册的Java Web Start服务已启动注册名称= JEENPT-AppEJBClient1,上下文根= / JEENPT-AppEJBClient1,模块名称=
CORE5024:EJB模块[JEENPT-SessionEJB1]已成功卸载!
classLoader = WebappClassLoader
代表:假
仓库:
---------->父类加载器:
WebappClassLoader
代表:真实
仓库:
/ WEB-INF / classes /
---------->父类加载器:
EJBClassLoader:
urlSet = []
doneCalled =假
父级-> java.net.URLClassLoader@103de90
SharedSecrets.getJavaNetAccess()= java.net.URLClassLoader$7@cf10ae
独立应用程序客户端com.sun.enterprise.appclient.jws.AppclientContentOrigin@db05a8注册的Java Web Start服务已结束,注册名称= JEENPT-AppEJBClient1,上下文根= / JEENPT-AppEJBClient1,模块名称=
ADM1064:位于[C:\ Documents and Settings \ Yamin \ Local Settings \ Temp \ s1astempdomain1server1142715591 \ JEENPT-AppEJBClient1.jar]的上载文件已存在并将被覆盖。
ADM1006:将文件上传到:[C:\ Documents and Settings \ Yamin \ Local Settings \ Temp \ s1astempdomain1server1142715591 \ JEENPT-AppEJBClient1.jar]
找不到类[jeenptbeans / NewSessionRemote]。加载[类jeenptappejbclient1.Main]时出错
注释处理中的错误:java.lang.NoClassDefFoundError:jeenptbeans / NewSessionRemote
使用moduleid = JEENPT-AppEJBClient1部署
注册临时servlet:WebPathPath:上下文根=“ / JEENPT-AppEJBClient1”,路径=“'
为独立应用程序客户端com.sun.enterprise.appclient.jws.AppclientContentOrigin@8500bc注册的Java Web Start服务已启动注册名称= JEENPT-AppEJBClient1,上下文根= / JEENPT-AppEJBClient1,模块名称=
请帮我。使“ Enterprise Application Client”应用程序测试简单会话bean是对还是错?我也不知道在哪里为主要功能添加参数。要使用netbean 6.7测试这个非常简单的ejb,请教我以下步骤。非常感谢。
最佳答案
Netaas非常擅长的领域之一是Documentation, Training & Support(和Community Docs)。在这里,我建议检查Creating EJB3 Sessions Beans using Netbeans 6.1 and Glassfish(如页面底部所写,“与NetBeans 6.0、6.5、6.1、6.7、6.7.1一起使用”)。
关于Enterprise Application Client功能,应该可以,但是我没有任何经验(我想知道这样的项目在NetBeans之外如何工作)。我只会使用标准的Java客户端。
关于java - 如何在netbean6.7中开发和运行ejb?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2026924/