请高手指点 JBoss 实例
Jay02 2003-02-20 11:12:51 我根据一个例子改成 Hello World,希望能手工配置成功一个例子,以加深理解。
JBoss版本是3.0.0_tomcat-4.0.3。
HelloWorld.jar中,有HelloWorld.class、HelloWorldHome.class、HelloWorldBean.class,还有META-INF目录,其中有ejb-jar.xml、jboss.xml、MANIFEST.MF三个文件。源码如下:
一、Java类
//========HelloWorld.java===========
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface HelloWorld extends EJBObject {
public String hello() throws RemoteException;
}
//========HelloWorldBean.java========
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class HelloWorldBean implements SessionBean {
public String hello() {
return "Hello World";
}
public HelloWorldBean() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
//======HelloWorldHome.java=============
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface HelloWorldHome extends EJBHome {
HelloWorld create() throws RemoteException, CreateException;
}
二、EJB描述
//====== ejb-jar.xml =======
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<description>No Description.</description>
<display-name>Generated by XDoclet</display-name>
<enterprise-beans>
<session >
<description><![CDATA[Session Bean Template ATTENTION: Some of the XDoclet tags are hidden from XDoclet by adding a "--" between @ and the namespace.]]></description>
<display-name>Bug TestSession Bean</display-name>
<ejb-name>HelloWorld</ejb-name>
<home>HelloWorldHome</home>
<remote>HelloWorld</remote>
<ejb-class>HelloWorldBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>test/Mail</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
</enterprise-beans>
</ejb-jar>
// ========== jboss.xml ===========
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS//EN" "http://www.jboss.org/j2ee/dtd/jboss.dtd">
<jboss>
<enterprise-beans>
<session>
<ejb-name>HelloWorld</ejb-name>
<jndi-name>ejb/HelloWorld</jndi-name>
</session>
</enterprise-beans>
</jboss>
// ========MANIFEST.MF ==========
Manifest-Version: 1.0
Created-By: Apache Ant 1.5.1
===================================
我使用一个JSP来作为客户端测试。
web-test.war
// ========= index.jsp ========
<%@ page
session="false"
isThreadSafe="true"
isErrorPage="false"
import="javax.naming.*"
%>
<h4>Web Client</h4>
<p><%
try {
Context lContext = new InitialContext();
HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
"java:comp/env/ejb/HelloWorld"
);
HelloWorld lSession = lHome.create();
out.println( lSession.hello() );
}
catch( Exception e ) {
out.println( "Caugth exception: " + e.getMessage() );
e.printStackTrace();
}
%></p><br><br>
web-test.war中除index.jsp外,还有META-INF、WEB-INF两个目录。
META-INF中有MANIFEST.MF同上。
WEB-INF中有web.xml、jboss-web.xml和class目录。class目录是HelloWorld.jar(如上)的三个class文件。
// ========= web.xml ========
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Web Client</display-name>
<!-- The Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<ejb-ref>
<ejb-ref-name>ejb/HelloWorld</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>HelloWorldHome</home>
<remote>HelloWorld</remote>
</ejb-ref>
</web-app>
// ======== jboss-web.xml ==========
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web
PUBLIC "-//JBoss//DTD Web Application 2.3//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_3_0.dtd">
<jboss-web>
<ejb-ref>
<ejb-ref-name>ejb/HelloWorld</ejb-ref-name>
<jndi-name>ejb/HelloWorld</jndi-name>
</ejb-ref>
</jboss-web>
我的jar和war是用winrar打包的,不知道可否?
访问 http://localhost:8080/web-test/index.jsp
报错:
The requested resource (/web-test/index.jsp) is not available.
请帮我分析一下。谢谢!!!
(要不请留下email。源码大概5K)