请高手指点 JBoss 实例

Jay02 Jay02 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我根据一个例子改成 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)
...全文
评论 18
收藏 已收藏
分享
返回顶部
Jay02
Java EE 67,535 成员 225,843 内容