Error:
测试键入http://localhost:8084/interestweb/将出错!!

解决方案 »

  1.   

    原文如下: http://www.jdon.com/idea/ejb/jbuilder_jboss.htm
      J道:Java之道,解决之道在 解道  
     
      首    页 设计模式 并行计算  J2EE心得 资   料 论    坛 
      
     
     
     
     
      
          
     
    本站全部  
     
     热门教程
    J2EE原创教程和实战实例专业服务
    提供最专业的解决之道 
     
     
     用JBuilder Ent 7开发一个简单J2EE 应用
    板桥里人 http://www.jdon.com 2002/06/2说实话,在使用Jbuilder前 我也是有抵触情绪的,认为Java图形界面程序总是很慢,但是由于经不住Jbuilder强大的EJB开发功能的诱惑,将我原来PIII 450 128M内存扩展到192M以后,安装上Jbuilder 7,惊奇的发现,庞大的Jbuilder 7居然可以顺畅的运行了。运行Jbuilder 7的感觉和在我机器上运行 Corel Draw 10一样,虽然启动时都一样慢,但在使用过程中就非常顺畅,没有停顿。Jbuilder 7不愧是现在最好的Java开发工具.Jbulder EJB2.0的可视化工具可以在几分种内开发CMP EJB,开发者有更多的时间花在客户市场上,这样看似复杂的EJB开发已经变得非常简单和迅速。
    一。安装准备工作1.正确安装Jboss+Tomcat 2.下载安装Jbuilder 7 企业版,3.开始你自己的项目开发,为项目设置server,选择Project Properties 中的 Server.选择 JBoss 3x 确认OK.4.为了部署你的ear war或u jar, 选择Tools/Enterprise Deployment部署即可. 二。开发简单的EJB1.我们使用现成Interest程序,该程序可以从JBoss的http://www.jboss.org/docs/manual/files/的documentation-example.zip 中获得.在C盘根目录建立一个目录examples,将上述包中org/Jboss/docs/Interest目录拷贝到examples下.同时将interest目录下的*.xml配置文件去除,我们将使用Jbuilder来生成这些文件.2.选择 New project for existing code -->Directory 选择 目录c:\examples -->name 输入examples(自己定义),完成后,在左边栏目中,出现examples项目,还有目录org.jboss.docs.interest,双击,可看到5个Java程序。reBuild这些源程序,以便下一步我们在EJB designer中导入。3.选择new -->EJB Module (如果你的项目server不支持EJB,将无法选择此项,本项目是使用JBoss来作为EJB的支持服务器,这些在project properties的server选择设定)-->取名interest(自己定义)-->选择version为EJB 2.0 完成后,在左边栏目中,又多出一个interest目录,双击,如果我们不使用下载的interest源程序,可以在右边大栏目上方 点击 "Create EJB",从而创建自己的EJB;这里我们使用了interest,所以要导入,可以在右边大栏目上方 点击 "Import EJB"bean name: Interest
    bean type: session -->interest是个session bean。
    base class: org.jboss.docs.interest.InterestBean
    home interface class:org.jboss.docs.interest.InterestHome 
    remotr interface class: org.jboss.docs.interest.Interest完毕后,出现了一个红色方框,表示我们的Interest EJB创建好了。你可以点击 "EJB DD Source"看看ejb-jar.xml的内容.rebuild或make这个EJB,会自动生成一个jar文件 三。建立简单的Web 应用
    4.EJB建立完成后,我们开始建立一个web应用:在new -->Web Application(如果你的项目 server不支持Web,将无法选择此项目)输入web application的名字,自己定义,如interestweb 以后访问这个web应用,就是http://localhost:8080/interestweb/directory就选择examples目录下web目录,这也是自己定义的。完成后,在左边栏目中多出一个interestweb的目录.5.建立一个Web Servlet,由于interest源程序中,是靠servlet来调用EJB的,当然你也可以用你的JSp调用EJB,那么我们要增加一个Web Servlet应用。选择new-->Servlet --->package 选择org.jboss.docs.interest
    classname:自己定义,如InterestServlet
    其他都是欠缺,注意,由于interest中原来有一个程序叫 InterestServlet,这次我们将替换这个程序(Servlet程序无法象EJB那样导入).完成后,在左边栏目出又多出一个目录;Addtional Settings,展开,我们看到了InterestServlet,然后,将原来的InterestServlet内容copy过来。rebuild检查这个servlet有无问题。6.有了servlet 我们需要一个页面来访问这个Servlet,在interest原来程序中,是home.html,我们使用Jbuilder的new导航,自动建立一个home.jsp. 将home.html中代码copy过来就可以。这样在interestweb下的Rott directory多了一个home.jsprebuild检查这个home.jsp有无问题。 四。配置发布7.一个简单的J2EE框架已经出来了,现在我们要作些配置工作,让Web应用的Servlet能够访问到EJB:展开interestweb 展开deployment desciptors,双击web.xml 我们来编辑web.xmlweb.xml是用来定义web应用的,在本web应用中,关键是要让应用程序找寻到EJB,也就是关键是JNDI的配置。这里我们使用JNDI的欠缺配置,直接引用<ejb-name>的值,这要求web应用程序和EJB程序在一个EAR文件中。更复杂的JNDI配置就要根据不同的J2EE server各自不一样,在实际应用中,有专门的deploy人员负责。在左边右下角出现webApp deployment descriptor的DTD 就是语法。首先,我们要解决和EJB的联系,选择EJB References, 增加一个EJB reference:Reference Name:
    这个EJB的名字很重要,由于interest程序中是用InterestServlet调用EJB的,我们要打开InterestServlet,寻找到Object ref = jndiContext.lookup("java:comp/env/ejb/Interest");其中ejb/Interest就是Reference Namelink:
    由于上面提到,我们使用欠缺的JNDI机制,所以这里link一定要定义,定义成<ejb-name>,本例中是InterestHome Interfcae:
    org.jboss.docs.interest.InterestHomeRemote Interfcae:
    org.jboss.docs.interest.Interest打开source 可以看到:<?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>
    <servlet>
    <servlet-name>interestservlet</servlet-name>
    <servlet-class>org.jboss.docs.interest.InterestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>interestservlet</servlet-name>
    <url-pattern>/interestservlet</url-pattern>
    </servlet-mapping>
    <ejb-ref>
    <ejb-ref-name>ejb/Interest</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>org.jboss.docs.interest.InterestHome</home>
    <remote>org.jboss.docs.interest.Interest</remote>
    <ejb-link>Interest</ejb-link>
    </ejb-ref>
    </web-app> 注意: <url-pattern>/interestservlet</url-pattern>是访问InterestServlet的Jsp或html页面中的form action的值,有大小写区分,现在是:<form action="interestservlet" >...</form>但是本例中,有一个home.html是用来调用InterestServlet的,我们看看home.html的代码发现:<form action="InterestServlet" method="POST" >所以现在有两种选择,要么修改这里的<url-pattern> 要么修改home.html中action我们修改<url-pattern>吧。注意: <servlet-name>interestservlet</servlet-name>中是servlet的名字,也区分大小写,我们servlet的程序是InterestServlet,如果你有不符合的地方要修改过来配置welcome files为home.jsp 在本例中,第一个文件不是index.html 或index.jsp 是home.jsp 否则测试键入http://localhost:8084/interestweb/将出错。rebuild或make这个web应用,会自动生成一个war文件8.最后,我们来生成ear文件,如果没有Jbuilder帮忙,我们可能要使用ant手工编制build.xml,如果你经常开发新项目,这就很麻烦。Jbuilder现在很快能搞定。new-->Ear (如果在本项目中,你没有安装EJB server,将无法选择)在建立导航中,Jbuilder会自动发现你的EJB ,你要打钩加入,自动发现你的Web App ,你要选中。完成后,在左边栏目中,多出一个examples.eargrp目录,双击打开,其实这就是application.xml由此J2EE需要的几个标准XML配置文件,我们依靠Jbuilder已经迅速的建立完成。8.rebuild或make, 会自动在examples.eargrp下生成examples.ear文件。使用tools/Enterprise Deployment 将examples.ear发布到JBoss中或手工将examples.ear拷贝到Jboss的deploy目录下。 五。测试成功http://localhost:8080/interestweb/访问你的J2EE,按提交按钮后,应该出现下列:Servlet interface to EJB
    Calling EJB...
    Interest on 1000.0 units, at 10.0% per period, compounded over 2.0 periods is: 210.00000000000023  这里是本例中成功发布的程序,你可以将其中examples.ear直接发布,或打开,和你自己的试验作个对比