Enterprise Application and MyEclipse Project Overview

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2007-08-23 13:24 youngturk 阅读(99) | 评论 (0)编辑 收藏

在 Web 应用程序中配置资源

     摘要: 在 Web 应用程序中配置资源Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1在 Web 应用程序中配置资源   2以下部分描述如何配置 Web 应用程序资...  阅读全文

posted @ 2007-08-10 11:23 youngturk 阅读(104) | 评论 (0)编辑 收藏

把WebLogic EJB程序迁移到JBoss上

WebLogic服务器是一款顶级的商业应用程序服务器。但是对于小规模的开发者来说,开发源代码的、基于标准的应用程序服务器JBoss是可以用来替换类似WebLogic或WebSphere等商业应用程序服务器的。不幸的是,在WebLogic中开发的应用程序不能在JBoss中部署。JBoss迁移服务为我们提供了把应用程序迁移到JBoss上的支持。作为代替,通过把厂商特定的部署文件信息迁移到JBoss上,是可能把应用程序迁移到JBoss上的。为了演示如何把应用程序迁移到JBoss的过程,我们将把一个在WebLogic中开发的带有Oracle数据库的EJB应用程序迁移到带有MySQL数据库的JBoss应用程序服务器上。

  预安装软件

  为了配置MySQL数据库的JDBC连接,需要下载MySQL数据库驱动程序类。

  1.下载MySQL JDBC驱动程序.jar文件

  2.下载和安装MySQL数据库服务器

  3.下载和安装JBoss 4.0应用程序服务器

  开发一个Java应用程序,我们将使用它和XSLT把WebLogic部署文件转换为JBoss部署文件。该部署文件也可以使用XSLT工具进行转换。

  概述

  在不进行修改的时候,WebLogic中开发的应用程序是不能部署在JBoss中的。JBoss应用程序的部署文件与WebLogic的部署文件不同。在本文中,我们将把一个在WebLogic中开发的实体(entity)EJB应用程序示例迁移到JBoss中,迁移的方法是把WebLogic部署文件转换为JBoss部署文件。

  示例应用程序包含一个Catalog实体EJB。该EJB的bean类(CatalogBean.java)、远程接口(Catalog.java)、和home接口(CatalogHome.java)都在本文下载链接的weblogic-jboss-resources.zip示例文件中。我们将使用MySQL开放源代码数据库来配置JBoss应用程序。把WebLogic EJB应用程序部署到JBoss中并不需要修改实体EJB类,只需要修改该EJB的部署文件。

  配置JBoss和MySQL

  MySQL是一个开放源代码的数据库,它适合于开放源代码的项目和小型组织。为了配置JBoss和MySQL数据库需要进行下面一些修改。

  配置JBoss类路径

  为了使用JBoss 4.0和MySQL,我们首先要把驱动程序类.jar文件(mysql-connector-java-3.0.9-stable-bin.jar)复制到<JBoss>/server/default/lib目录中。其中的<JBoss>是JBoss应用程序服务器安装的目录。lib目录的.jar和.zip文件都包含在JBoss服务器的Classpath(类路径)中。

  配置MySQL数据源

  为了使用MySQL数据源,需要把<JBoss>/docs/examples/jca/mysql-ds.xml复制到<JBoss>/server/default/deploy目录中。当JBoss服务器启动的时候,deploy目录中的数据源配置文件就被部署好了。依照下面的步骤修改mysql-ds.xml配置文件:

  · 把<driver-class/>设置为com.mysql.jdbc.Driver,<connection-url/>设置为jdbc:mysql://localhost/<database>,其中<database>是MySQL数据库。<database>的值可以设置为test,它是MySQL中的示例数据库。

  · 在jndi-name元素中指定数据源的JNDI名称。

  · 指定连接MySQL数据库的用户名和密码。在默认情况下,root用户名不需要密码。

  · 把type-mapping元素指定为mySQL。type-mapping元素指定了standardjbosscmp-jdbc.xml部署文件中预定义的数据库类型映射关系。对于MySQL数据库来说,类型映射是mySQL。

  修改过的mysql-ds.xml如下所示:

  <?xml version="1.0" encoding="UTF-8"?>
  <datasources>
  <local-tx-datasource>
  <jndi-name>MySqlDS</jndi-name>
  <connection-url>jdbc:mysql://localhost/test</connection-url>
  <driver-class>com.mysql.jdbc.Driver</driver-class>
  <user-name>root</user-name>
  <password></password>
  <metadata>
  <type-mapping>mySQL</type-mapping>
  </metadata>
  </local-tx-datasource>
  </datasources>

  我们可以通过提供数据源JNDI名称从数据源获取一个JDBC连接:

  InitialContext initialContext = new InitialContext();
  javax.sql.DataSource ds = (javax.sql.DataSource)
  initialContext.lookup("java:/MySqlDS");
  java.sql.Connection conn = ds.getConnection();

  配置登录信息

  现在我们根据MySQL数据库设置来修改login-config.xml配置文件。为了登录到MySQL数据库,应用程序策略MySqlDbRealm是必要的。给login-config.xml添加下面的<application-policy/>元素:

  <application-policy name = "MySqlDbRealm">
  <authentication>
  <login-module code =
  "org.jboss.resource.security.ConfiguredIdentityLoginModule"
  flag = "required">
  <module-option name ="principal"></module-option>
  <module-option name ="userName">root</module-option>
  <module-option name ="password"></module-option>
  <module-option name ="managedConnectionFactoryName">
  jboss.jca:service=LocalTxCM,name=MySqlDS
  </module-option>
  </login-module>
  </authentication>
  </application-policy>


  通过修改mysql-ds.xml和login-config.xml文件,JBoss 4.0服务器已经被配置好了,可以使用MySQL数据库了。除了前面的一些特定的设置之外,可能还需要对JBoss部署文件和JBoss JDBC配置文件作一些修改。

  如果"建立表"选项被选中(通过把jbosscmp-jdbc.xml中的create-table元素设置为true)用于部署CMP实体EJB,并且MySQL表的主键(或唯一键)的长度超过了500字节,应用程序的部署过程会在MySQL数据库中生成一个SQL语法错误。对于java.lang.String类型的CMP字段,我们可以通过在standardjbosscmp-jdbc.xml部署文件的mySQL类型映射中把用于Java类型java.lang.String的SQL类型设置为较低的VARCHAR值来减小主键(或唯一键)的长度。另一个可能出现的问题是jbosscmp-jdbc.xml部署文件中的column-name元素。如果某个MySQL表的列名与MySQL保留字相同,在JBoss中部署J2EE应用程序的时候会产生一个错误。解决这个问题的方法是使列名与MySQL保留字不同。

   转换WebLogic EJB应用程序

  在建立起使用MySQL的JBoss服务器之后,你现在必须把该WebLogic EJB应用程序转换为JBoss EJB应用程序,这就涉及到部署文件的修改。WebLogic实体EJB应用程序由EJB部署文件(ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml),bean类(CatalogBean.java)、远程接口(Catalog.java)和home接口(CatalogHome.java)组成。为了在WebLogic服务器上部署实体EJB,需要建立一个EJB .jar文件,这个EJB .jar文件的结构如下:

  META-INF/
  ejb-jar.xml
  weblogic-ejb-jar.xml
  weblogic-cmp-rdbms-jar.xml
  CatalogBean.class
  Catalog.class
  CatalogHome.class

  EJB的结构信息和应用程序汇编信息都在部署文件中指定。结构信息包括说明EJB是对话EJB还是实体EJB。ejb-jar.xml部署文件中的应用程序汇编信息在assembly-descriptor元素中指定。WebLogic中该实体EJB部署文件包括ejb-jar.xml、weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml。相应的JBoss部署文件是ejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml。这些文件之间的转换如下所示。

  ejb-jar.xml部署文件对于WebLogic和JBoss来说都是一样的,除了multiplicity元素之外。JBoss服务器的ejb-jar.xml中的multiplicity元素需要大写,例如One或Many,而不是one或many。

  示例实体EJB的ejb-jar.xml部署文件包含在示例代码中。示例ejb-jar.xml定义了一个叫做"Catalog"的实体EJB。这个示例EJB拥有CMP字段catalogId、journal和publisher。其主键字段是catalogId。

  把weblogic-ejb-jar.xml转换为jboss.xml

  weblogic-ejb-jar.xml和jboss.xml部署文件都是EJB厂商的特定部署文件。为了把WebLogic EJB应用程序部署到JBoss应用程序服务器上,必须把weblogic-ejb-jar.xml部署文件转换为jboss.xml。

  weblogic-ejb-jar.xml中的根元素是weblogic-ejb-jar。jboss.xml中的根元素是jboss。在jboss.xml和weblogic-ejb-jar.xml部署文件中指定某个EJB的JNDI名称的元素是jndi-name或local-jndi-name。本文中的示例实体EJB的weblogic-ejb-jar.xml部署文件也包含在示例代码中。weblogic-ejb-jar.xml部署文件的DOCTYPE元素是:

  <!DOCTYPE weblogic-ejb-jar PUBLIC
  "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
  "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd" >
  jboss.xml部署文件的DOCTYPE是:
  <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
  "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">

  我们通过一个自定义的XSLT样式表jboss.xslt(包含在示例代码中)把部署文件weblogic-ejb-jar.xml转换为jboss.xml。该样式表建立jboss.xml,它是与WebLogic的weblogic-ejb-jar.xml部署文件相当的JBoss文件。使用jboss.xslt样式表所生成的jboss.xml文件也包含在示例代码中。

  把weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml

  weblogic-cmp-rdbms-jar.xml部署文件指定了CMP实体EJB的数据库持续信息。weblogic-cmp-rdbms-jar.xml文件包含实体EJB的表名称、连接到数据库的数据源和与该实体EJB CMP字段对应的列。示例实体EJB的weblogic-cmp-rdbms-jar.xml部署文件包含在可以下载的.zip文件中。指定CMP视图EJB持续信息的JBoss部署文件是jbosscmp-jdbc.xml。

  weblogic-cmp-rdbms-jar.xml的根元素是weblogic-rdbms-jar;jbosscmp-jdbc.xml的根元素是jbosscmp-jdbc。weblogic-cmp-rdbms-jar.xml文件中指定连接到数据库的数据源的data-source-name元素与jbosscmp-jdbc.xml部署文件中的datasource元素功能相当。weblogic-cmp-rdbms-jar.xml指定实体EJB CMP字段与数据库表的列之间映射关系的field-map元素与jbosscmp-jdbc.xml中的cmp-field元素功能相当。weblogic-cmp-rdbms-jar.xml中指定列名的dbms-column元素与jbosscmp-jdbc.xml中的column-name元素功能相当。weblogic-cmp-rdbms-jar.xml部署文件的DOCTYPE是:

  <!DOCTYPE weblogic-rdbms-jar PUBLIC
  '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN'
  'http://www.bea.com/servers/wls810/dtd/weblogic-rdbms20-persistence-810.dtd'>
  jbosscmp-jdbc.xml的DOCTYPE是:
  <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN"
  "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd">


  我们使用自定义的XSLT样式表jbosscmp-jdbc.xslt(包含在示例代码中)把部署文件weblogic-cmp-rdbms-jar.xml转换为jbosscmp-jdbc.xml。该样式表建立jbosscmp-jdbc.xml,它是与WebLogic的weblogic-cmp-rdbms-jar.xml部署文件功能相当的JBoss文件。jbosscmp-jdbc.xml也包含下载在.zip文件中。

  WebLogic部署文件的DTD与JBoss部署文件的不同。使用自定义的XSLT的时候,如果部署文件中还出现了一些额外的元素,可能还需要做进一步的修改,可以把WebLogic部署文件转换为JBoss部署文件。在下面的部分中,我们将在JBoss服务器上部署这个EJB应用程序。

  在JBoss中部署该EJB应用程序

  把WebLogic EJB部署文件转换为JBoss部署文件之后,你必须建立一个心的EJB .jar文件以部署到JBoss服务器上。该JBoss .jar文件的结构如下:

  META-INF/
  ejb-jar.xml
  jboss.xml
  jbosscmp-jdbc.xml
  CatalogBean.class
  Catalog.class
  CatalogHome.class

  编译示例EJB类和接口:

  java Catalog.java CatalogBean.java CatalogHome.java

  把JBoss部署文件ejb-jar.xml、jboss.xml和jbosscmp-jdbc.xml复制到META-INF目录中。使用jar工具从JBoss部署文件、类和接口中建立一个.jar文件。

  jar cf CatalogEJB.jar CatalogBean.class
  Catalog.class CatalogHome.class META-INF/*.xml

  部署该JBoss实体EJB应用程序的过程是,把该.jar文件(EntityEJB.jar)复制到<JBoss>\server\default\deploy目录(其中<JBoss>是JBoss安装的目录)中。当服务器启动的时候,该EJB应用程序就在JBoss服务器上面部署好了。JBoss应用程序服务器中的部署(deploy)目录与WebLogic应用程序服务器中的应用程序(applications)目录对应。

  结论

  通过转换部署文件可以把WebLogic中部署的实体EJB应用程序迁移到JBoss应用程序服务器上。使用相似的步骤,通过把weblogic.xml 部署文件转换为jboss-web.xml ,也可以把WebLogic J2EE Web应用程序迁移到JBoss上。

posted @ 2007-08-08 17:05 youngturk 阅读(240) | 评论 (0)编辑 收藏

简单的EJB开发实例,JBOSS4.0+ECLIPSE3.1

相信很多刚学做J2EE开发的人都会觉得入手很麻烦,特献上前不久整理给一学弟看的一个EJB应用示例,开发环境是JBOSS4.0.2+ECLIPSE3.1。
软件下载配置安装我就不多说了,相信大家都会很轻易搞定。

开发流程,写一个简单的stateful session bean,进行远程调用,计算出某一特定正整数的Fibonacci值。

所创建的project下引入jbossall-client.jar,在JBOSS_HOME/client目录下
分别用eclipse写出EJB远程调用的home接口,remote接口和相对应的Bean
———1. home接口———
package com.terry.ejbsample;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

/**
* @author terry
*
*/
public interface FibonacciHome extends EJBHome
{
  Fibonacci create() throws RemoteException, CreateException;

}
———2. remote 接口———
package com.terry.ejbsample;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
* @author terry
*
*/
public interface Fibonacci extends EJBObject
{
  public long getFibonacci(int n) throws RemoteException;
}
———3. FibonacciBean———
package com.terry.ejbsample;

import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* @author terry
*
*/
public class FibonacciBean implements SessionBean
{
  public long getFibonacci(int n)
  {
    if (n==0) return 1;
    else if (n==1) return 1;
    else
        return getFibonacci(n - 1) + getFibonacci(n - 2);
  }
  public void ejbCreate() throws CreateException
{
System.out.println(“Bean created”);
}
  public void ejbRemove(){}  
  public void ejbActivate(){}  
  public void ejbPassivate(){}
  public void setSessionContext(SessionContext ctx){}
}

配置相对应的ejb-jar.xml和jboss.xml文件
———1. ejb-jar.xml———
<?xml version="1.0"?>

<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
                http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
  version="2.1">
  <enterprise-beans>
    <session>
        <ejb-name>Fibonacci</ejb-name>
        <home>com.terry.ejbsample.FibonacciHome</home>
        <remote>com.terry.ejbsample.Fibonacci</remote>
        <ejb-class>com.terry.ejbsample.FibonacciBean</ejb-class>
        <session-type>Stateful</session-type>
        <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
</ejb-jar>
———2. jboss.xml———
<?xml version="1.0"?>

<jboss>
  <enterprise-beans>
    <session>
        <ejb-name>Fibonacci</ejb-name>
        <jndi-name>FibonacciHome</jndi-name>
    </session>
  </enterprise-beans>
</jboss>
在Eclipse中配置所需package的jar包,将class文件以及xml描述文件分别添加进去,注意正确的前缀,xml文件必须在根目录下的META-INF文件夹中。或者你可以在console窗口使用jar命令进行打包(如 jar cf ff.jar *)

将刚刚打包的ff.jar放入JBOSS_HOME/server/default/deploy,启动jboss的默认服务器,如果一切顺利的话,你会在console窗口中看到你刚刚所写的FibonacciBean已经被成功部署到jboss中了。

写一个简单的测试程序
———FibonacciClient.java———
package com.terry.ejbsample;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
/**
* @author terry
*
*/
public class FibonacciClient
{
  public static void main(String[] args)
  {
    try
    {
        java.util.Properties p = new java.util.Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY,
            "org.jnp.interfaces.NamingContextFactory");
        p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
        p.put(Context.PROVIDER_URL, "localhost:1099");
       
        Context jndiContext = new InitialContext(p);
        Object ref = jndiContext.lookup("FibonacciHome");
        FibonacciHome home = (FibonacciHome) PortableRemoteObject.narrow(
            ref, FibonacciHome.class);
        Fibonacci ff = home.create();
        long result;
        for (int i = 40; i >= 0; i--)
        {
          result = ff.getFibonacci(i);
          System.out.println("Fibonacci of" + i + " is " + result);
        }
    } catch (java.rmi.RemoteException re)
    {
        re.printStackTrace();
    } catch (Throwable t)
    {
        t.printStackTrace();
    }
  }
}

解析此例
J2EE应用说白了其实原理也很简单,J2EE是分布式系统,意味着server与client是通过RMI-IIOP和JNDI进行交互的。简单来说就是提供给client一种可以远程调用server端程序的方法,当然其中的细节会比较复杂,不过这些都是你深入之后才会接触到的东西。
本文示例,客户端通过JNDI利用Home接口创建出一个Remote object,再通过调用Remote object 中的方法与FibonacciBean进行交互,处理逻辑。客户端并不是直接与Bean进行交互。
程序中的ejb-jar.xml是用来描述EJB属性的,jboss.xml是用来定义ejb-jar.xml中Bean所对应的JNDI信息。

posted @ 2007-08-08 17:02 youngturk 阅读(1139) | 评论 (2)编辑 收藏

直接配置MyEclipse的WebLogic服务器

posted @ 2007-07-26 23:14 youngturk 阅读(328) | 评论 (0)编辑 收藏

主题: MyEclipse + WebLogic 开发 EJB 需注意

一般在使用 EJB 时都是从创立 J2EE 项目的 Application 项中依次创建 Application、EJB、Web 三项,其中:
Appliction 是用来作为 J2EE 部署时使用的。
EJB 就是创建 EJB 组件。
Web 就是一个 Web 服务的容器,包括 HTML、JSP、Servlet、Struts 等。

在 MyEclipse 中使用 EJB 的两种方法:
①选择 J2EE 1.3 则可以通过 xDoclet 来根据 App_Bean 来生成 App、Home、Session、Apputil 等。
②选择 J2EE 1.4 的话就需要自己写 App、Home、Session 等程序代码。对于整个程序以后的运行过程都是以 JNDI 为主线的展开,要注意
A.一般要以 Home 中的 JNDI-Name 为标准,具体在使用 xDoclet 的 J2EE 1.3 时参看相关的帮助。
B.配置主要在 weblogic-ejb-jar.xml 和 ejb-jar.xml 的 JNDI 的设置(这一般是针对于在同一服务器内部的 JNDI 的调用,而对于其他外部情况,需要设置 Ervirament 权限等问题后才能进行 Lookup)。

由于在服务器等各方面的原因,在部署之前要注意几个配置文件的正确的位置:

A.weblogic-ejb-jar.xml 和 ejb-jar.xml 要在 XXXEJB/src/meta-inf 下,可以通过在不同的目录下导入。
B.web.xml 和 weblogic.xml 要在 XXXWeb/webRoot/web-inf 下,可以 weblogic.xml 直接用别的程序的,web.xml 需要自己根据需要来配置。

最后在部署之前,要对整个 Application Server 的三项进行项目清理,然后部署到服务器上。

posted @ 2007-07-26 23:10 youngturk 阅读(536) | 评论 (0)编辑 收藏

getElementByid的用法

     摘要:   阅读全文

posted @ 2007-07-26 18:40 youngturk 阅读(104) | 评论 (0)编辑 收藏

DHTML

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1一样看到了,那就一并收入下来,原文在此:http://ikshow.cn/ivane/article.asp?id=57  2  3此JS...  阅读全文

posted @ 2007-07-26 17:47 youngturk 阅读(89) | 评论 (0)编辑 收藏

javascript示例

     摘要: 各种事件Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->   1事件源对象    2event.srcElement.tagName    3...  阅读全文

posted @ 2007-07-26 17:19 youngturk 阅读(742) | 评论 (1)编辑 收藏

Ajax 应用程序所用到的基本技术:

    只有注册用户登录后才能阅读该文。阅读全文

posted @ 2007-07-26 09:24 youngturk 阅读(107) | 评论 (0)编辑 收藏

仅列出标题
共33页: First 上一页 21 22 23 24 25 26 27 28 29 下一页 Last 
<2024年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

公告

this year :
1 jQuery
2 freemarker
3 框架结构
4 口语英语

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

EJB学习

Flex学习

learn English

oracle

spring MVC web service

SQL

Struts

生活保健

解析文件

搜索

最新评论

阅读排行榜

评论排行榜