zxbyhcsdn

 

myeclipse搭建SSH2环境的项目引用

>问题提出:

  比如说你要电子商务系统类似淘宝的那玩意儿,
  这个系统应该有一个管理系统门户,还有一系列接口(提供给taobao旺旺客户端调用的接口,还有淘宝开放平台的那些api),然后就是一个网站门户这个是显然不可少的.

  也就是说,大多数系统都不可能只有一个门户,并且从部署和安全的角度来说,管理门户都会单独部署,并且限制能够访问的ip.

  从逻辑架构来划分也应该是 业务逻辑层(或者称为服务层),然后是多个web门户.或者接口服务门户
  如果是采用ms的doNET的话,可以建一个解决方案,然后再建多个项目,由于doNET的编译后一个项目是一个dll存在,故doNET来说应该根据分层建立多个项目.doNET
  也推荐采用这样的方式.

  下面说一下采用j2ee处理这样的情况的做法.这儿以myeclipse为例来说.

  根据上述情况,显然我们应该把业务逻辑放到一个项目,其他的门户根据每一个门户单独建立一个项目,以后系统部署的时候,也就将不同的门户部署到不同的服务器上去.

  其实就是各门户的项目引用业务逻辑项目就可以了,将公用的东东都抽象出来放到一起(比如说 商品相关的逻辑 在网站门户,管理后台,接口都会共用的)

  下面用一个简单的例子,说明一下实现步骤. 最后再介绍ssh2项目怎样实现.

步骤如下:

新建一个java project   [注意:]这儿一定要是一个java project ,我试过如果建成一个web projcet的话,可以编译通过,但是发布的时候,引用的class不会自己动拷贝过去,除非手动拷贝.
起名字为servicecore,名字无所谓的.
然后在src,再建一个folder叫service

随便写个类:

package service;
public class OneSrv
{
 public String test()
 {
  return "this is test info";
 }
}

然后再建一个java web project
起名字叫serviceweb,名字无所谓的
然后,选中这个项目,属性,java build path 里面选projects
然后添加servicecore这个项目,
在native library location那儿,选workspace,就指到 servicecore 的src目录就是了 [这儿就表示发布的时候,会应用的项目的src目录下的东东全部发布到目标项目]


然后在serviceweb项目的src下面,再建一个folder叫srvproxy
再写一个类,来调用servicecore项目的的类的方法
package srvproxy;
import service.*;
public class OneSrvProxy
{
 public String test()
 {
  OneSrv oneSrv = new OneSrv();
  return oneSrv.test();
 }
}

再在jsp页面上调用这个

<%
      srvproxy.OneSrvProxy oneSrvProxy = new srvproxy.OneSrvProxy();
      out.println(oneSrvProxy.test());
    %>

然后发布这个serviceweb项目到tomcate或者其他的容器,
可以看到在发布的目录下的serviceweb\WEB-INF\classes\service
下面,也有那个OneSrv.class了

呵呵..,如果没有问题的话,访问那个jsp页面,就能看到调用的情况啦.

也可以在jsp页面上直接调用,OneSrv.class,
对于web project 来说的话,只要是在\WEB-INF\classes\下面的class都可以调用的.

这样就把业务逻辑和表示分离了.

但是上述的例子只是一个非常简单的,实际的系统开发有数据访问等. 下面就介绍对于一个SSH2 项目如何实现

这儿以一个已经存在的ssh2 的web project 项目为利,讲解怎样吧业务逻辑抽象到一个java project 中.

步骤如下:
一,新建一个java project ,在servicecore里面随便建一个lib,

这儿分两种情况,
如果是已经有一个现成的ssh2 的 web project
就想现成的 web projcect 的webroot的web-info下的lib文件甲的那些jar包全部拷贝到 servicecore 这个java project 的lib里面

如果是没有现成的ssh2 的web project 的话.
可以通过myeclipse添加hibernate和spring的capability指定myeclipse的那些jar包到那个lib下,
完成后,把那个lib下的jar包,拷贝到serviceweb的webroot的web-info下的lib文件甲

这儿保证ssh2的相关的jar包都放到lib下面了.
然后选中servicecore 属性,java build path -> libraries 选择Add External JARs,然后指向刚才的那个lib文件夹
这样项目就能使用那些jar包了. 同时把web project 的 build path 也 添加这些JAR包.

[注意:]我遇到这样一个问题,就是servicecore这个项目找不到数据库 的jdbc驱动,明明我吧ojdbc14.jar加到那个buildpath里面了的.
       解决办法是在myeclipse的java类编辑器,报错的那个不能识别的包名下划线那儿双击,会弹出来一个窗口,里面有一个oracle jdbc的驱动
       其实这个是另外的webprojcect里面的jdbc驱动.使用这个也没关系,只要编译通过就可以了.反正最总发布的时候,是使用web poject的的webroot的web-info下的lib文件甲里面的jar包.


再将web project 的引用指向servicecore 这个java project ,步骤如前面所说.

二, 相关的文件的处理

1.spring 配置文件的处理.

由于ssh2项目的话,spring配置文件里面会包含 dao,Bo,action等各层的class 故,需要对配置文件进行分割.

这儿将所有的配置文件都放到/WEB-INF/classes/spr-conf/文件夹下面,
[注意:]这个是发布后的位置,解决方案中的classes 就对应src 目录.
在web.xml里面的spring配置文件路径就写成如下
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/spr-conf/*.xml</param-value>
</context-param>

然后在servicecore 的 src 目录下新建spr-conf目录,在所有的web project的src目录下也建spr-conf目录.
将dao,bo等业务逻辑类的配置放到servicecore的 spring配置文件中,
将action等类配置放到web projcect 的srping配置文件中,

这样struts的配置文件放到web project 中, hibernate的配置文件放到servicecore中.spring配置文件(action的在web projcect,其他的都放到servicecore).

三 总述
  经过这样的处理,项目就分离了,对于较大的项目,开发人员可以分工,一些人专门做业务逻辑,一些人专门做前端页面,同时也达到了复用的效果.


 

posted on 2010-02-20 12:06 zxbyh 阅读(4075) 评论(0)  编辑  收藏 所属分类: J2se


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜