Session 访问远程/本地会话bean
我正在尝试连接到会话bean。我尝试了许多不同的方法,我发现谷歌,但我总是得到相同的错误,因为我的JNDI查找总是返回NULL 以下是错误:Session 访问远程/本地会话bean,session,tomcat,ejb,jndi,Session,Tomcat,Ejb,Jndi,我正在尝试连接到会话bean。我尝试了许多不同的方法,我发现谷歌,但我总是得到相同的错误,因为我的JNDI查找总是返回NULL 以下是错误: java.lang.NullPointerException at org.apache.jsp.index_jsp._jspService(index_jsp.java:85) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.ht
java.lang.NullPointerException
at org.apache.jsp.index_jsp._jspService(index_jsp.java:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
所以,我可能缺少一些配置,但我是这方面的新手。帮点忙 这是我的实体Bean:
package beans;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
@Entity
public class Album {
@Id
@Column(name="idalbum")
@GeneratedValue(generator="album_idalbum_seq")
@GenericGenerator(name="album_idalbum_seq", strategy = "increment")
private int id;
@Column(name="nomealbum")
private String nome;
@ManyToMany
@JoinTable(name = "albumfaixas",
joinColumns = {
@JoinColumn(name = "idalbum")
},
inverseJoinColumns = {
@JoinColumn(name="idfaixas")
}
)
private Set<Faixas> faixas = new HashSet<Faixas>();
public Album() {}
//gets and sets
}
我使用myeclipse进行开发,使用Tomcat进行服务器开发你真的很接近了。输入,此代码应该可以工作 Tomcat本机不支持EJB,但可以通过OpenEJB轻松实现。事实上,我们现在正在调用这个组合,并正在进行JavaEE6Web概要文件的验证。因此,它将进入Glassfish、JBoss、Geronimo等的行列
如果你还没有,请确保你的应用程序中有一个定义持久化单元的
WEB-INF/classes/META-INF/persistence.xml
文件。你真的很接近了。输入,此代码应该可以工作
Tomcat本机不支持EJB,但可以通过OpenEJB轻松实现。事实上,我们现在正在调用这个组合,并正在进行JavaEE6Web概要文件的验证。因此,它将进入Glassfish、JBoss、Geronimo等的行列
如果您还没有,请确保应用程序中有一个定义持久化单元的WEB-INF/classes/META-INF/persistence.xml
文件
package DAO;
import org.hibernate.*;
import sFactory.*;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import beans.*;
@Stateless
public class AlbumDAO implements AlbumRemote {
@PersistenceContext
private EntityManager entityManager;
public List<Album> listaAlbuns() { ... code ... }
public void createAlbum(Album f) { ... code ... }
public void updateAlbum(Album f) { ... code ... }
public void deleteAlbum(Album f) { ... code ... }
}
package DAO;
import javax.ejb.Remote;
import java.util.List;
import beans.Album;
@Remote
public interface AlbumRemote {
public List<Album> listaAlbuns();
public void createAlbum(Album f);
public void updateAlbum(Album f);
public void deleteAlbum(Album f);
}
package DAO;
import javax.ejb.Local;
import java.util.List;
import beans.Album;
@Local
public interface AlbumLocal {
public List<Album> listaAlbuns();
public void createAlbum(Album f);
public void updateAlbum(Album f);
public void deleteAlbum(Album f);
}
<ejb-ref>
<ejb-ref-name>ejb/AlbumRemote</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>DAO.AlbumLocal</home>
<remote>DAO.AlbumRemote</remote>
</ejb-ref>
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object x = ctx.lookup("ejb/AlbumRemote");
AlbumRemote fr = (AlbumRemote)PortableRemoteObject.narrow(x, AlbumRemote.class);
fr.createAlbum(fx1);