我原来看过一篇文章,可能是我修行不够,也可能他在关键部分说得太简单,说是打war之后就放到webapp目录中,下面我就不明白如何做了。
再者如何打成war我也不知只知jar.

解决方案 »

  1.   

    resin 支持ejb嘛!!!!!!!!!!!!
      

  2.   

    http://www.java-cn.com/上有一篇文章有介绍的:原文如下:在resin-ee-2.1.5上构建j2ee应用服务 
    --------------------------------------------------------------------------------在resin-ee-2.1.5上构建j2ee应用服务 
    (100101)北京信息工程学院 蔡君 www.justhis.com ----如果要转载请注明来处和作者 
    一、所需软件 
    1.JDK 
    因为resin自己不带j2sdk,所以必须在安装resin之前要安装j2sdk,这样的话,我们可以使用任何版本的j2sdk, 与有些AppServer相比较,省去了千方百计修改jdk的苦恼。 
    Sun公司相关下载连接 
    http://java.sun.com/j2se/downloads.html 2.resin-ee 
    caucho公司的resin虽然现在没有多少人知晓,但是他的调试能力,他的执行速度实在让人惊叹,caucho 公司的resin对JSP、servlet的解析能力更是略胜一筹,国内许多大型网站都采用了resin的服务器(尽管许多 开发人员并未使用),象:http://www.163.com http://www.chinaren.com http://www.justhis.com. 
    resin-ee经过几次修订之后,已经越来越稳定了,他的CMP(容器管理)更是显示出强大的威力,可配置性、即使更新的功能更是让人瞠目结舌。 
    caucho相关下载 
    http://www.caucho.com/download/ PS:本人系统环境为win2kServerSP3+j2sdk1.4+resin-ee-2.1.5 二、构建环境 
    1、在Resin的目录下发布 
    在resin.conf中查找<web-app>标签,该标签表示一个web应用。 
    标签中,id属性表示该应用的Web路径。如<web-app id=’/test’>,表示该应用在Web上访问的时候应该用http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如<app-dir>d:\resin\doc\test</app-dir>表示该应用在d:\resin\doc\test目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page:404错误也就是文件找不到错误页;Exception违例页;不能连接java引擎页。他们分别可以这样子设置。 
    404文件找不到页 
    <web-app id=&acute;/app1&acute;> 
    <error-page error-code=&acute;404&acute; location=&acute;/file_not_found.jsp&acute;/> 
    </web-app> 
    Exception 违例页 
    <web-app id=&acute;/foo&acute;> 
    <error-page exception-type=&acute;java.lang.NullPointerException&acute; 
    location=&acute;/nullpointer.jsp&acute;/> 
    </web-app> 
    不能连接到srun Servlet引擎错误页 
    该页设置和应用无关,属于服务器的设置。 
    <http-server> 
    <error-page exception-type=&acute;connection&acute; 
    location=&acute;/missing_file.html&acute;/> 
    </http-server> 
    classpath的设置 
    参见下面的语句: 
    <classpath id=&acute;WEB-INF/classes&acute; source=&acute;WEB-INF/src&acute; compile=&acute;true&acute;/> 
    id参数的值表示classpath中编译后的classpath的存放路径;source参数的值表示classpath中java源代码的存放路径;compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。Servlet相同。 
    Servlet的设置 
    参见下面的语句: 
    <servlet-mapping url-pattern=&acute;*.xtp&acute; servlet-name=&acute;xtp&acute;/> 
    <servlet-mapping url-pattern=&acute;*.jsp&acute; servlet-name=&acute;jsp&acute;/> 
    <servlet-mapping url-pattern=&acute;/servlet/*&acute; servlet-name=&acute;invoker&acute;/> 
    一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置: 
    <servlet-mapping url-pattern=&acute;*.xtp&acute; servlet-name=&acute;com.caucho.jsp.XtpServlet&acute;/> 
    在Servlet中,也可以指定servlet。如 
    <servlet servlet-name=&acute;hello&acute; servlet-class=&acute;test.HelloWorld&acute;/> 
    <servlet-mapping url-pattern=&acute;/hello.html&acute; servlet-name=&acute;hello&acute;/> 
    在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。 
    Session的配置 
    参见如下的配置语句: 
    <session-config> 
    <session-max>4096</session-max> 
    <session-timeout>30</session-timeout> 
    <enable-cookies>true</enable-cookies> 
    <enable-url-rewriting>true</enable-url-rewriting> 
    <file-store>WEB-INF/sessions</file-store> 
    </session-config> 
    session-max :最大 session数量 
    session-timeout :session过期时间,以分钟为单位。 
    是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,enable-url-rewriting应该设成true比较合适。 
    file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。在这里session还支持了多服务器的设置问题, 
    通过tcp-store参数设置。由于涉及到负载平衡的问题,在这里不详细叙述,只简单写一个例子: 
    <http-server> 
    <http id=&acute;a&acute; port=&acute;80&acute;/> 
    <srun id=&acute;a&acute; host=&acute;host-a&acute; port=&acute;6802&acute;/> 
    <http id=&acute;b&acute; port=&acute;80&acute;/> 
    <srun id=&acute;b&acute; host=&acute;host-b&acute; port=&acute;6802&acute;/> 
    <host id=&acute;&acute;> 
    <web-app id=&acute;&acute;> 
    <session-config> 
    <tcp-store/> 
    <always-load-session/> 
    </session-config> 
    </web-app> 
    </host> 
    </http-server> 
    这个例子表示session是按照tcp ring的方式传递。 
    temp-dir 的设置 
    temp-dir指的是应用的临时目录。也就是在javax.servlet.context.tempdir中用到的目录。模认是应用目录下的WEB-INF\tmp目录。 
    以上的设置都可以在<web-app>标签对中设置,控制某个web应用的设置。 
    2、打包成War发布 
    以下是介绍对如何在resin下使用已经打包成War的java Web应用进行发布。 
    其实这个是最简单也是最清晰的良好方法。在j2ee中,所有的项目都打包成ear发布。其中,Web应用打包成war,ejb应用打包成jar。在resin中,这些都可以直接部署。这里我只对打包成war的Web应用的部署做介绍。 
    在resin.conf中,查找这个:<war-dir id=&acute;webapps&acute;/>。他表示war文件应该被拷贝的路径。这里指的是相对于resin的安装路径,如以上的设置表示d:\resin\webapps。只要重新启动Resin就可以了。Resin会把该war自动解包到webapps目录下。你可以在command控制台或者stdout.log中看到类似于 
    [2002-04-27 09:56:21.680] initializing application http://haitaiserver:8080/rwtest 的语句。这个表示该Web应用是自动安装的。只要这个应用是符合j2ee标准的Web应用,应该不会有问题。通过如上显示的路径就可以访问到这个应用。如果你到d:\resin\webapps\rwtest中浏览,你会看到Resin已经为你生成了rwtest目录,下面是META-INF和WEB-INF还有你自己的JSP\servlet 文件和目录。是完全符合j2ee的结构的。你可以在rwtest目录下建立新的jsp\servlet,一样可以被编译和解析并运行的。在实际操作中,可以使用Jbuilder 或者 WebSphere等Ide工具进行集成调试和打包,非常的方便。 
    3、打包成Ear发布 
    一个ear的发布带有就j2ee的一些文件,譬如一个jzjweb.ear他包涵有jzjwebEjb.jar和jzjweb.war,部署相当简单,就是把此文件拷贝到web-apps文件夹下面,这个时候您就可以看到resin的控制台显示有一些初始化的一些信息。这个时候可以通过浏览器进行浏览您的基于j2ee的应用服务器的webApplication了,呵呵,岂不很爽? 
      

  3.   

    三、用resin作为AppServer进行开发的相关配置。 
    看到resin的这么多优点是不是已经迫不及待了?让我们进行深度探险吧。 
    1. 进行DataSource的配置 打开<resin_home>/confi/resin.conf,您可以看见里面已经有了这么一段 
    <resource-ref> 
    <res-ref-name>jdbc/test</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <init-param driver-name="com.caucho.jdbc.mysql.Driver"/> 
    <init-param url="jdbc:mysql_caucho://localhost:3306/test"/> 
    <init-param user="root"/> 
    <init-param password=""/> 
    <init-param max-connections="20"/> 
    <init-param max-idle-time="30"/> 
    </resource-ref> 
    这些东西我想您一看就知道是什么意思了吧,略作介绍: 
    <resource-ref> 为资源参引 
    <res-ref-name>就是资源引用的名字,这个您可要记好了,这是在程序中LookUp的标识哟。 
    <res-type>就是为引用的类型,在此为DataSource同样也可以为其他的类型。 
    <ini-param >为初始化的参数 
    driver-name:为数据库的驱动程序 
    url: 为数据库的连接URL 
    user: 为数据库的用户名字 
    password:为数据库的连接密码 
    max-connections为数据库的最大连接量 
    max-idle-time:为最长连接时间 如果我们相配置一个基于oracle的Datasource应该怎么作呢,我不作解释了,只给出相应的代码,我想您肯定能够知道的。^_^ 
    <resource-ref> 
    <res-ref-name>jzjwebDataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <init-param driver-name="oracle.jdbc.driver.OracleDriver"/> 
    <init-param url="jdbc:oracle:thin:@10.1.7.128:1521:ora817"/> 
    <init-param user="ecid"/> 
    <init-param password="ecid"/> 
    <init-param max-connections="120"/> 
    <init-param max-idle-time="30"/> 
    </resource-ref> 
    2. 进行web.xml的配置 Web.xml的配置可以说是关键的,不要听我这么一说感觉很难,其实resin自带一个例子cmp里面的配置说明已经相当经典,我们可以很容易的配置我们所需的webApp,其实有的时候在resin.conf里面的配置的东西,同样在web.xml也是适用,为了自动读取.ejb文件,并且观察ejb文件变化,我们先要引用一些资源文件,如下面的一段设置: <resource-ref> 
    <res-ref-name>java:comp/env/cmp</res-ref-name> 
    <class-name>com.caucho.ejb.EJBServer</class-name> 
    <init-param data-source="java:comp/env/jdbc/test"/> 
    <!-- sets the JDBC isolation level --> 
    <init-param jdbc-isolation="serializable"/> 
    </resource-ref> 
    此定义中引用一个CMP的引用,其他的引用也是大同小异,如果要是引用remote的Bean,我们可以通过定义下面的Servelet映射,此映射主要是用来调用远程的EJB,如果您使用一个CMP就不必使用下面的映射了,可以将其删掉 
    <servlet-mapping> 
    <url-pattern id=&acute;/burlap/*&acute;/> 
    <servlet-name id=&acute;com.caucho.burlap.EJBServlet&acute;/> 
    <init-param url-prefix="http://localhost:8080/hello/burlap"/> 
    </servlet-mapping> 我们还需要定义对于远程jndi的调用URL,这与前面定义的Servelet要对应的,一个例子: 
    <jndi-link> 
    <jndi-name>java:comp/env/ejb</jndi-name> 
    <jndi-factory>com.caucho.burlap.BurlapContextFactory</jndi-factory> 
    <init-param java.naming.provider.url="http://localhost:8080/hello/burlap"/> 
    </jndi-link> 
    此处hello为App的名称,您可以在不同的地方修改。 
    通过以上的配置我们就可以运行我们的j2ee程序了,在默认的情况下,文件的存放为: 
    <<web-App>>/-- 
    |-----.jsp 
    |---web-inf/ 
    | .ejb 
    |web.xml 
    |<<classes>>/XXX/XXX/XXX.class 
    |<<lib>>/.jar 目录结构完全是安j2ee规范的。 四.一个使用resin服务器的Hello程序。 现在一个<<resin_home>>\webapps目录下面建立一个目录hello 
    这个时候您要是通过浏览器浏览http://localhost:8080/hello 此时会在hello目录下面自动创建一个WEB-INF文件夹,然后在WEB-INF/目录下面建立web.xml文件 和 hello-stateless.ejb 
    在<<resin_home>>\webapps\hello\WEB-INF 目录下面创建两个目录分别为classes , lib 
    其中classes为您的class的文件,而lib为您的jar文件存放地。程序代码,见附件。 
    后记:自己花了一个下午地时间把一个oracle+iplanet的j2ee的程序移至resin服务器下面,虽然还有一些问题,但是个人认为,利用resin进行开发再好不过了,不用把大把大把的时间花在重新启动服务器的,resin对于web.xml 和 java class文件改变都会重载应用程序。 
    GOOK Luck! 
    在resin-ee-2.1.5上构建j2ee应用服务 
    (100101)北京信息工程学院 蔡君( 阿菜) www.justhis.com 
      

  4.   

    resin ee 没用过,用weblogic吧,资料多。