`
xidajiancun
  • 浏览: 449361 次
文章分类
社区版块
存档分类
最新评论

使用koala插件完成项目创建、业务开发、打包发布

 
阅读更多

Quick Start

1 Koala的下载和安装

1.1 前提准备

使用koala,确保你的电脑上已安装并正确运行以下软件:

1) JDK 1.5以上

2) Maven 2以上

3) eclipse 3.7以上

4) eclipse安装m2eclipse插件

m2eclispe的插件更新地址为:http://download.eclipse.org/technology/m2e/releases

Warning

koala依赖m2eclipse插件,请确保你的m2eclipse插件的版本为1.2以上。旧有的0.2版本的m2eclipse与koala存在不兼容的现象。

如果当前eclispe安装版本为0.2版本的m2eclipse,请先uninstall,再安装最新版本的m2eclipse。

Warning

确保maven的配置文件在${user.home}/.m2/setting.xml中,如果直接使用maven的conf/settting.xml配置,将会导致部分功能出现

项目不能正常编译,请检查”错误

1.2 Koala的下载

koala是一款eclipse插件,请下载我们的插件zip包进行安装。点击此处下载

1.3 Koala的安装

遵照以下步骤进行安装:

1) 打开eclipse,Help->Install New Software。

2) 选择Add,分别输入名称及更新地址(或Archeive选择下载的更新ZIP包)。

3)点击确定,出现可安装的koala列表,全选。

4) 按照提示进行Next>进行安装,eclipse提示重启便表示安装成功。

现在,你可以开始使用koala进行项目的开发了。

2 项目的创建

下面我们将带领大家使用Koala插件创建一个新的项目,打开eclipse的新建项目向导对话框,选择Koala->Koala Project。

点击Next按钮,出现Koala的新建项目向导,如图:

在“Project name”处填写项目名称:demo,其他使用默认,点击Next按钮,进入下一步,maven信息填写的向导页。

“Group Id”处填写:org.foreveross,“Artifact Id”处填写:demo,其他默认,点击Next按钮,进入添加模块的向导页。

Koala根据领域驱动设计的分层思想默认生成了四个层的模块,其中应用层分为接口和实现两个模块。“demo-infra”为基础设施层的模块,“demo-core”为领域层的模块,“demo-application”为应用层接口模块,“demo-applicationImpl”为应用层实现模块,“demo-web”为展现层模块并默认使用了Struts2(如果用户有不同需求可自行修改)。用户可根据需要点击“add”按钮添加新模块,或者选中模块后点击“edit”按钮修改模块配置,或者选中点击“remove“按钮删除模块等。这里我们不做修改,使用默认生成的模块。

点击Next按钮,进入下一步。

由于我们项目中有视图层web模块,koala会让我们选择是否将权限系统加入到web模块中。下面第一个单选按钮组是选择权限的认证连接方式,第二个单选按钮组是选择所要使用的缓存技术类型(对用户,角色,资源等信息的缓存),最后一个单选按钮组是选择权限系统的页面菜单结构布局的模版。同样,我们使用默认选中的配置,即使用“集成式(jdbc)”的连接方式,“ehCache”来实现缓存,并使用“TemplateA”的页面模版。点击Next按钮,进入最后的项目信息汇总展示页面。

该页面展示了我们所配置的项目信息。点击“Finish”按钮完成项目信息的填写并开始生成项目。

在生成项目完成之后会弹出导入项目的对话框。

选择要导入的项目和模块,此处我们可以看到,在导入项目列表中,多了一个“demo-conf”项目,这是koala默认用来存放公用配置文件的模块,所以可以多模块共享的配置文件均放在此模块中。

在这里,我们一样使用默认的全部导入,直接点击“Finish”按钮开始项目和模块的导入。

完成之后我们可以在eclipse的“Project Explorer”看到我们使用Koala新建并导入的demo项目。

接下来,我们就可以在demo项目中开始我们的业务开发了。

3 权限系统

我们在生成项目的时候已经勾选了在demo-web模块加入了koala权限系统。现在我们的项目中便已经有了一套基于角色授权的权限管理系统。

右键点击demo项目的demo-web模块,选择Run As --> Koala Jetty Run,运行Jetty服务器

跑起服务器之后,打开浏览器,输入:http://localhost:8080,由于有了权限管理,系统将要求用户必须进行登录。

关于权限系统的详细使用方法,请参考4.权限系统支持

4 实体类CRUD

下面我们自己新建一个Organization领域类及其的关联属性Address领域类(ManyToOne),Employee领域类(OneToMany)。

下面是各领域类代码:

Organization.java
packageorg.foreveross.demo.core;
importjava.util.List;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.JoinColumn;
importjavax.persistence.ManyToOne;
importjavax.persistence.OneToMany;
importjavax.persistence.Table;
importcom.dayatang.domain.BaseEntity;
@Entity
@Table(name ="organizations")
publicclassOrganizationextendsBaseEntity {
/**
*
*/
privatestaticfinallongserialVersionUID = 1946346499573992799L;
privateString name;
@Column(name ="serial_number")
privateString serialNumber;
@ManyToOne
@JoinColumn(name ="address_id")
privateAddress address;
@OneToMany
privateList<Employee> employees;
publicAddress getAddress() {
returnaddress;
}
publicvoidsetAddress(Address address) {
this.address = address;
}
publicList<Employee> getEmployees() {
returnemployees;
}
publicvoidsetEmployees(List<Employee> employees) {
this.employees = employees;
}
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
publicString getSerialNumber() {
returnserialNumber;
}
publicvoidsetSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
@Override
publicinthashCode() {
finalintprime =31;
intresult =1;
result = prime * result + ((getId() ==null) ?0: getId().hashCode());
returnresult;
}
@Override
publicbooleanequals(Object obj) {
if(this== obj)
returntrue;
if(obj ==null)
returnfalse;
if(getClass() != obj.getClass())
returnfalse;
Organization other = (Organization) obj;
if(getId() ==null) {
if(other.getId() !=null)
returnfalse;
}elseif(!getId().equals(other.getId()))
returnfalse;
returntrue;
}
publicbooleanexisted() {
returnfalse;
}
publicbooleanexisted(String arg0, Object arg1) {
returnfalse;
}
publicbooleannotExisted() {
returnfalse;
}
Address.java
packageorg.foreveross.demo.core;
importjavax.persistence.Entity;
importjavax.persistence.Table;
importcom.dayatang.domain.BaseEntity;
@Entity
@Table(name ="addresses")
publicclassAddressextendsBaseEntity {
/**
*
*/
privatestaticfinallongserialVersionUID = -208372668032795503L;
privateString country;
privateString province;
privateString city;
publicString getCountry() {
returncountry;
}
publicvoidsetCountry(String country) {
this.country = country;
}
publicString getProvince() {
returnprovince;
}
publicvoidsetProvince(String province) {
this.province = province;
}
publicString getCity() {
returncity;
}
publicvoidsetCity(String city) {
this.city = city;
}
@Override
publicinthashCode() {
finalintprime =31;
intresult =1;
result = prime * result + ((getId() ==null) ?0: getId().hashCode());
returnresult;
}
@Override
publicbooleanequals(Object obj) {
if(this== obj)
returntrue;
if(obj ==null)
returnfalse;
if(getClass() != obj.getClass())
returnfalse;
Address other = (Address) obj;
if(getId() ==null) {
if(other.getId() !=null)
returnfalse;
}elseif(!getId().equals(other.getId()))
returnfalse;
returntrue;
}
publicbooleanexisted() {
returnfalse;
}
publicbooleanexisted(String arg0, Object arg1) {
returnfalse;
}
publicbooleannotExisted() {
returnfalse;
}
}
Employee.java
packageorg.foreveross.demo.core;
importjavax.persistence.Entity;
importjavax.persistence.Table;
importcom.dayatang.domain.BaseEntity;
@Entity
@Table(name ="employees")
publicclassEmployeeextendsBaseEntity {
/**
*
*/
privatestaticfinallongserialVersionUID = 7289549346393758637L;
privateString name;
privateintage;
privateString gender;
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
publicintgetAge() {
returnage;
}
publicvoidsetAge(intage) {
this.age = age;
}
publicString getGender() {
returngender;
}
publicvoidsetGender(String gender) {
this.gender = gender;
}
@Override
publicinthashCode() {
finalintprime =31;
intresult =1;
result = prime * result + ((getId() ==null) ?0: getId().hashCode());
returnresult;
}
@Override
publicbooleanequals(Object obj) {
if(this== obj)
returntrue;
if(obj ==null)
returnfalse;
if(getClass() != obj.getClass())
returnfalse;
Employee other = (Employee) obj;
if(getId() ==null) {
if(other.getId() !=null)
returnfalse;
}elseif(!getId().equals(other.getId()))
returnfalse;
returntrue;
}
publicbooleanexisted() {
returnfalse;
}
publicbooleanexisted(String arg0, Object arg1) {
returnfalse;
}
publicbooleannotExisted() {
returnfalse;
}
}

其中要注意的是,领域类需要在类名前加上@Entity的标注以表明其是一个领域类。

下面我们将使用Koala快速为Organization生成增删改查的功能及web页面。

右键点击Organization领域类,选择Koala—>CRUD,Koala会对Organization.java类进行分析,然后弹出CRUD的配置窗口

在配置窗口中,“查询条件”标签页是对在web页面的查询功能中要显示的查询条件进行配置,“列表页面”标签页是对前端列表页面要显示的列进行配置,“详情页面”标签页是对前端单个实体的显示页面所要显示的内容进行配置,“新增页面”标签页是对新增实体页面中要填写的内容进行配置,“修改页面”标签页是对修改实体页面中要修改的内容进行配置。

为了快速,我们使用koala自动分析生成的配置,具体如何配置CRUD,请参考CRUD配置说明文档

点击“OK”按钮,弹出生成文件列表及各层生成文件所处模块选择的窗口,如下图:

第一个框中列出了应用层接口所要生成的文件,并列出了项目中的应用层接口模块供用户选择要把文件生成在哪个应用层接口模块中。

第二个框中列出了应用层实现所要生成的文件,并列出了项目中的应用层实现模块供用户选择要把文件生成在哪个应用层实现模块中。

第二个框中列出了展现层所要生成的文件,并列出了项目中的展现层模块供用户选择要把文件生成在哪个展现层模块中。

由于我们每一层只创建了一个模块,所以我们此处无需做选择,直接点击“OK”按钮。Koala将为我们生成一整套的增删改查功能的实现,从应用层的功能代码生成和配置,到展现层web模块的配置和代码实现,包括页面端代码。下面介绍每层生成的文件的作用:

1) 在应用层接口(demo-application)模块,生成了实体操作的接口以及相关的VO及OrganizationApplication接口,该接口中定义了对Organization的增删改查功能。

2) 在应用层实现(applicationImpl)模块,生成了应用层接口的实现:OrganizationApplicationImpl。该类实现了OrganizationApplication接口,实现了对Organization的增删改查功能。

3) 在web模块,生成了OrganizationAction和前端的jsp界面。其中,OrganizationAction通过调用应用层接口实现了对Organization的增删改查,并通过jsp页面与用户交互

下面我们运行Jetty服务器,访问Koala生成的Organization实体的CRUD页面。

右键点击demo项目的demo-web模块,选择Run As --> Koala Jetty Run,运行Jetty服务器。

跑起服务器之后,打开浏览器,输入:http://localhost:8080/pages/core/Organization-list.jsp

点击“增加”按钮,添加新的数据

弹出的新增页面中出现的填写内容及其标签都是根据我们之前在Koala插件CRUD的配置生成的。点击“保存”按钮。

保存成功后回到列表页面,列表上出现我们刚刚添加的信息。

点击该条信息操作列的“查看”链接

系统弹出内容查看页面,页面中出现的信息标签均是我们之前在Koala插件中所配置的,下方是我们所配置的关联实体的标签页显示。

关闭查看页面,在列表页面中勾选信息条目,点击“修改”按钮。

同样,弹出页面中的属性及其标签是根据我们使用koala插件进行的配置生成的,对内容做修改,点击“保存”按钮,回到列表页面。列表上显示已经我们更新的信息。

勾选信息行,点击“删除”按钮,可以将该信息删除。

至此,我们完成了根据Koala插件配置生成增删改查功能。

5 项目的发布

5.1 WebService发布:

假设当我们的程序需要以WebService的形式发布给外界使用,我们可以使用koala插件进行WebService发布。

右键点击项目,选择“Koala Public”->“发布为WebService”。

点击“发布为WebService”选项,Koala插件会先检查项目的正确性,然后自动扫描项目中可以发布为WebService服务的接口,最后弹出选择发布WebService服务的对话框。如下图:

Koala插件会根据方法名称,自动决定选择使用的HTTP方法,在每个方法名称的最前面的中括号中显示了Koala为该方法选定的WebService HTTP方法。如果用户想修改,可以右键点击方法名,在弹出的右键菜单中选择相应的HTTP方法。这里我们只需按照默认的配置发布,点击OK按钮,开始执行发布操作。

Koala插件在弹出框显示的目录中生成了打包了WebService发布的war包,一个在原项目的基础上加入WebService发布代码的WebService项目和一个用于访问该WebService项目的客户端项目,用户可以调用该客户端项目的代码来访问发布的WebService服务。

点击“打开文件夹”按钮,打开发布包所在文件夹。我们将该文件夹中的“demo-WS.war”文件拷到jboss的发布目录中进行发布,并跑起jboss服务器。然后打开浏览器,访问:http://localhost:8081/demo-WS/(8081为jboss的web服务端口号,请根据自己jboss端口号修改)。

点击链接:http://localhost:8081/demo-WS/v1?_wadl

可以看到,页面中显示了我们所发布的webservice接口。

5.2 EJB发布:

假设当我们的程序需要以EJB的形式发布接口给外界调用,我们同样可以使用koala插件进行EJB发布。

右键点击要发布EJB的项目,选择Koala->发布为EJB。

点击“发布为EJB”后,Koala插件会先检查项目的正确性,然后自动扫描项目中可以发布为EJB的接口,最后弹出选择EJB发布的对话框。如下图:

用户可以根据需要选择想要发布为EJB的接口实现,Koala插件为每一个方法提供了EJB发布的两种方式,在“local”树下勾选的方法将作为本地EJB发布,在“remote”树下勾选的方法将作为远程EJB发布。这里我们只需按照默认的配置发布,点击OK按钮,开始执行打包发布EJB的操作。

Koala插件在弹出框显示的目录下生成了用户发布的ear包,一个在原项目的基础上加入了EJB发布代码的EJB项目和一个用于调用本项目EJB服务的客户端项目。用户可以调用该项目的代码进行EJB调用。

点击“打开文件夹”按钮,打开发布包所在文件夹。我们将该文件夹中的“demo-EJB.war”文件拷到jboss的发布目录中进行发布,并跑起jboss服务器。

打开jboss的JNDI查看,可以看到我们所发布的EJB接口。

至此,我们完成了一个使用koala插件从项目创建,业务开发到打包发布的简单项目过程。

---恢复内容结束---

Quick Start

1 Koala的下载和安装

1.1 前提准备

使用koala,确保你的电脑上已安装并正确运行以下软件:

1) JDK 1.5以上

2) Maven 2以上

3) eclipse 3.7以上

4) eclipse安装m2eclipse插件

m2eclispe的插件更新地址为:http://download.eclipse.org/technology/m2e/releases

Warning

koala依赖m2eclipse插件,请确保你的m2eclipse插件的版本为1.2以上。旧有的0.2版本的m2eclipse与koala存在不兼容的现象。

如果当前eclispe安装版本为0.2版本的m2eclipse,请先uninstall,再安装最新版本的m2eclipse。

Warning

确保maven的配置文件在${user.home}/.m2/setting.xml中,如果直接使用maven的conf/settting.xml配置,将会导致部分功能出现

“项目不能正常编译,请检查”错误

1.2 Koala的下载

koala是一款eclipse插件,请下载我们的插件zip包进行安装。点击此处下载

1.3 Koala的安装

遵照以下步骤进行安装:

1) 打开eclipse,Help->Install New Software。

2) 选择Add,分别输入名称及更新地址(或Archeive选择下载的更新ZIP包)。

3)点击确定,出现可安装的koala列表,全选。

4) 按照提示进行Next>进行安装,eclipse提示重启便表示安装成功。

现在,你可以开始使用koala进行项目的开发了。

2 项目的创建

下面我们将带领大家使用Koala插件创建一个新的项目,打开eclipse的新建项目向导对话框,选择Koala->Koala Project。

点击Next按钮,出现Koala的新建项目向导,如图:

在“Project name”处填写项目名称:demo,其他使用默认,点击Next按钮,进入下一步,maven信息填写的向导页。

“Group Id”处填写:org.foreveross,“Artifact Id”处填写:demo,其他默认,点击Next按钮,进入添加模块的向导页。

Koala根据领域驱动设计的分层思想默认生成了四个层的模块,其中应用层分为接口和实现两个模块。“demo-infra”为基础设施层的模块,“demo-core”为领域层的模块,“demo-application”为应用层接口模块,“demo-applicationImpl”为应用层实现模块,“demo-web”为展现层模块并默认使用了Struts2(如果用户有不同需求可自行修改)。用户可根据需要点击“add”按钮添加新模块,或者选中模块后点击“edit”按钮修改模块配置,或者选中点击“remove“按钮删除模块等。这里我们不做修改,使用默认生成的模块。

点击Next按钮,进入下一步。

由于我们项目中有视图层web模块,koala会让我们选择是否将权限系统加入到web模块中。下面第一个单选按钮组是选择权限的认证连接方式,第二个单选按钮组是选择所要使用的缓存技术类型(对用户,角色,资源等信息的缓存),最后一个单选按钮组是选择权限系统的页面菜单结构布局的模版。同样,我们使用默认选中的配置,即使用“集成式(jdbc)”的连接方式,“ehCache”来实现缓存,并使用“TemplateA”的页面模版。点击Next按钮,进入最后的项目信息汇总展示页面。

该页面展示了我们所配置的项目信息。点击“Finish”按钮完成项目信息的填写并开始生成项目。

在生成项目完成之后会弹出导入项目的对话框。

选择要导入的项目和模块,此处我们可以看到,在导入项目列表中,多了一个“demo-conf”项目,这是koala默认用来存放公用配置文件的模块,所以可以多模块共享的配置文件均放在此模块中。

在这里,我们一样使用默认的全部导入,直接点击“Finish”按钮开始项目和模块的导入。

完成之后我们可以在eclipse的“Project Explorer”看到我们使用Koala新建并导入的demo项目。

接下来,我们就可以在demo项目中开始我们的业务开发了。

3 权限系统

我们在生成项目的时候已经勾选了在demo-web模块加入了koala权限系统。现在我们的项目中便已经有了一套基于角色授权的权限管理系统。

右键点击demo项目的demo-web模块,选择Run As --> Koala Jetty Run,运行Jetty服务器。

跑起服务器之后,打开浏览器,输入:http://localhost:8080,由于有了权限管理,系统将要求用户必须进行登录。

关于权限系统的详细使用方法,请参考4.权限系统支持

4 实体类CRUD

下面我们自己新建一个Organization领域类及其的关联属性Address领域类(ManyToOne),Employee领域类(OneToMany)。

下面是各领域类代码:

Organization.java
packageorg.foreveross.demo.core;
importjava.util.List;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.JoinColumn;
importjavax.persistence.ManyToOne;
importjavax.persistence.OneToMany;
importjavax.persistence.Table;
importcom.dayatang.domain.BaseEntity;
@Entity
@Table(name ="organizations")
publicclassOrganizationextendsBaseEntity {
/**
*
*/
privatestaticfinallongserialVersionUID = 1946346499573992799L;
privateString name;
@Column(name ="serial_number")
privateString serialNumber;
@ManyToOne
@JoinColumn(name ="address_id")
privateAddress address;
@OneToMany
privateList<Employee> employees;
publicAddress getAddress() {
returnaddress;
}
publicvoidsetAddress(Address address) {
this.address = address;
}
publicList<Employee> getEmployees() {
returnemployees;
}
publicvoidsetEmployees(List<Employee> employees) {
this.employees = employees;
}
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
publicString getSerialNumber() {
returnserialNumber;
}
publicvoidsetSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
@Override
publicinthashCode() {
finalintprime =31;
intresult =1;
result = prime * result + ((getId() ==null) ?0: getId().hashCode());
returnresult;
}
@Override
publicbooleanequals(Object obj) {
if(this== obj)
returntrue;
if(obj ==null)
returnfalse;
if(getClass() != obj.getClass())
returnfalse;
Organization other = (Organization) obj;
if(getId() ==null) {
if(other.getId() !=null)
returnfalse;
}elseif(!getId().equals(other.getId()))
returnfalse;
returntrue;
}
publicbooleanexisted() {
returnfalse;
}
publicbooleanexisted(String arg0, Object arg1) {
returnfalse;
}
publicbooleannotExisted() {
returnfalse;
}
Address.java
packageorg.foreveross.demo.core;
importjavax.persistence.Entity;
importjavax.persistence.Table;
importcom.dayatang.domain.BaseEntity;
@Entity
@Table(name ="addresses")
publicclassAddressextendsBaseEntity {
/**
*
*/
privatestaticfinallongserialVersionUID = -208372668032795503L;
privateString country;
privateString province;
privateString city;
publicString getCountry() {
returncountry;
}
publicvoidsetCountry(String country) {
this.country = country;
}
publicString getProvince() {
returnprovince;
}
publicvoidsetProvince(String province) {
this.province = province;
}
publicString getCity() {
returncity;
}
publicvoidsetCity(String city) {
this.city = city;
}
@Override
publicinthashCode() {
finalintprime =31;
intresult =1;
result = prime * result + ((getId() ==null) ?0: getId().hashCode());
returnresult;
}
@Override
publicbooleanequals(Object obj) {
if(this== obj)
returntrue;
if(obj ==null)
returnfalse;
if(getClass() != obj.getClass())
returnfalse;
Address other = (Address) obj;
if(getId() ==null) {
if(other.getId() !=null)
returnfalse;
}elseif(!getId().equals(other.getId()))
returnfalse;
returntrue;
}
publicbooleanexisted() {
returnfalse;
}
publicbooleanexisted(String arg0, Object arg1) {
returnfalse;
}
publicbooleannotExisted() {
returnfalse;
}
}
Employee.java
packageorg.foreveross.demo.core;
importjavax.persistence.Entity;
importjavax.persistence.Table;
importcom.dayatang.domain.BaseEntity;
@Entity
@Table(name ="employees")
publicclassEmployeeextendsBaseEntity {
/**
*
*/
privatestaticfinallongserialVersionUID = 7289549346393758637L;
privateString name;
privateintage;
privateString gender;
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
publicintgetAge() {
returnage;
}
publicvoidsetAge(intage) {
this.age = age;
}
publicString getGender() {
returngender;
}
publicvoidsetGender(String gender) {
this.gender = gender;
}
@Override
publicinthashCode() {
finalintprime =31;
intresult =1;
result = prime * result + ((getId() ==null) ?0: getId().hashCode());
returnresult;
}
@Override
publicbooleanequals(Object obj) {
if(this== obj)
returntrue;
if(obj ==null)
returnfalse;
if(getClass() != obj.getClass())
returnfalse;
Employee other = (Employee) obj;
if(getId() ==null) {
if(other.getId() !=null)
returnfalse;
}elseif(!getId().equals(other.getId()))
returnfalse;
returntrue;
}
publicbooleanexisted() {
returnfalse;
}
publicbooleanexisted(String arg0, Object arg1) {
returnfalse;
}
publicbooleannotExisted() {
returnfalse;
}
}

其中要注意的是,领域类需要在类名前加上@Entity的标注以表明其是一个领域类。

下面我们将使用Koala快速为Organization生成增删改查的功能及web页面。

右键点击Organization领域类,选择Koala—>CRUD,Koala会对Organization.java类进行分析,然后弹出CRUD的配置窗口

在配置窗口中,“查询条件”标签页是对在web页面的查询功能中要显示的查询条件进行配置,“列表页面”标签页是对前端列表页面要显示的列进行配置,“详情页面”标签页是对前端单个实体的显示页面所要显示的内容进行配置,“新增页面”标签页是对新增实体页面中要填写的内容进行配置,“修改页面”标签页是对修改实体页面中要修改的内容进行配置。

为了快速,我们使用koala自动分析生成的配置,具体如何配置CRUD,请参考CRUD配置说明文档

点击“OK”按钮,弹出生成文件列表及各层生成文件所处模块选择的窗口,如下图:

第一个框中列出了应用层接口所要生成的文件,并列出了项目中的应用层接口模块供用户选择要把文件生成在哪个应用层接口模块中。

第二个框中列出了应用层实现所要生成的文件,并列出了项目中的应用层实现模块供用户选择要把文件生成在哪个应用层实现模块中。

第二个框中列出了展现层所要生成的文件,并列出了项目中的展现层模块供用户选择要把文件生成在哪个展现层模块中。

由于我们每一层只创建了一个模块,所以我们此处无需做选择,直接点击“OK”按钮。Koala将为我们生成一整套的增删改查功能的实现,从应用层的功能代码生成和配置,到展现层web模块的配置和代码实现,包括页面端代码。下面介绍每层生成的文件的作用:

1) 在应用层接口(demo-application)模块,生成了实体操作的接口以及相关的VO及OrganizationApplication接口,该接口中定义了对Organization的增删改查功能。

2) 在应用层实现(applicationImpl)模块,生成了应用层接口的实现:OrganizationApplicationImpl。该类实现了OrganizationApplication接口,实现了对Organization的增删改查功能。

3) 在web模块,生成了OrganizationAction和前端的jsp界面。其中,OrganizationAction通过调用应用层接口实现了对Organization的增删改查,并通过jsp页面与用户交互。

下面我们运行Jetty服务器,访问Koala生成的Organization实体的CRUD页面。

右键点击demo项目的demo-web模块,选择Run As --> Koala Jetty Run,运行Jetty服务器。

跑起服务器之后,打开浏览器,输入:http://localhost:8080/pages/core/Organization-list.jsp

点击“增加”按钮,添加新的数据。

弹出的新增页面中出现的填写内容及其标签都是根据我们之前在Koala插件CRUD的配置生成的。点击“保存”按钮。

保存成功后回到列表页面,列表上出现我们刚刚添加的信息。

点击该条信息操作列的“查看”链接。

系统弹出内容查看页面,页面中出现的信息标签均是我们之前在Koala插件中所配置的,下方是我们所配置的关联实体的标签页显示。

关闭查看页面,在列表页面中勾选信息条目,点击“修改”按钮。

同样,弹出页面中的属性及其标签是根据我们使用koala插件进行的配置生成的,对内容做修改,点击“保存”按钮,回到列表页面。列表上显示已经我们更新的信息。

勾选信息行,点击“删除”按钮,可以将该信息删除。

至此,我们完成了根据Koala插件配置生成增删改查功能。

5 项目的发布

5.1 WebService发布:

假设当我们的程序需要以WebService的形式发布给外界使用,我们可以使用koala插件进行WebService发布。

右键点击项目,选择“Koala Public”->“发布为WebService”。

点击“发布为WebService”选项,Koala插件会先检查项目的正确性,然后自动扫描项目中可以发布为WebService服务的接口,最后弹出选择发布WebService服务的对话框。如下图:

Koala插件会根据方法名称,自动决定选择使用的HTTP方法,在每个方法名称的最前面的中括号中显示了Koala为该方法选定的WebService HTTP方法。如果用户想修改,可以右键点击方法名,在弹出的右键菜单中选择相应的HTTP方法。这里我们只需按照默认的配置发布,点击OK按钮,开始执行发布操作。

Koala插件在弹出框显示的目录中生成了打包了WebService发布的war包,一个在原项目的基础上加入WebService发布代码的WebService项目和一个用于访问该WebService项目的客户端项目,用户可以调用该客户端项目的代码来访问发布的WebService服务。

点击“打开文件夹”按钮,打开发布包所在文件夹。我们将该文件夹中的“demo-WS.war”文件拷到jboss的发布目录中进行发布,并跑起jboss服务器。然后打开浏览器,访问:http://localhost:8081/demo-WS/(8081为jboss的web服务端口号,请根据自己jboss端口号修改)。

点击链接:http://localhost:8081/demo-WS/v1?_wadl

可以看到,页面中显示了我们所发布的webservice接口。

5.2 EJB发布:

假设当我们的程序需要以EJB的形式发布接口给外界调用,我们同样可以使用koala插件进行EJB发布。

右键点击要发布EJB的项目,选择Koala->发布为EJB。

点击“发布为EJB”后,Koala插件会先检查项目的正确性,然后自动扫描项目中可以发布为EJB的接口,最后弹出选择EJB发布的对话框。如下图:

用户可以根据需要选择想要发布为EJB的接口实现,Koala插件为每一个方法提供了EJB发布的两种方式,在“local”树下勾选的方法将作为本地EJB发布,在“remote”树下勾选的方法将作为远程EJB发布。这里我们只需按照默认的配置发布,点击OK按钮,开始执行打包发布EJB的操作。

Koala插件在弹出框显示的目录下生成了用户发布的ear包,一个在原项目的基础上加入了EJB发布代码的EJB项目和一个用于调用本项目EJB服务的客户端项目。用户可以调用该项目的代码进行EJB调用。

点击“打开文件夹”按钮,打开发布包所在文件夹。我们将该文件夹中的“demo-EJB.war”文件拷到jboss的发布目录中进行发布,并跑起jboss服务器。

打开jboss的JNDI查看,可以看到我们所发布的EJB接口。

至此,我们完成了一个使用koala插件从项目创建,业务开发到打包发布的简单项目过程。

分享到:
评论

相关推荐

    koala4.0.0的eclipse插件

    Koala(考拉)是一个面向Java开发者的开源免费开发平台,以领域驱动设计范 式为指导思想,以DDDLib框架为实现核心,提供KoalaUI前端框架、规 范化项目管理工具OpenCI、在线领域建模工具、强大的组件库及可视化 开发...

    koala.rar(Eclipse插件)

    1.重构Eclipse插件,更好的易用性,支持一键运行等 2.创建项目支持子系统源代码集成 3.创建项目生成新的分层模型,符合领域驱动设计分层 4.DDDLib升级到4.3.6版本,JPA注解标注在字段上 5.权限子系统重构,支持细...

    koala contrent.jar

    koala插件

    koala less

    koala是一个前端预处理器语言图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容windows、linux、mac。

    koala软件

    koala软件

    koala代码生成框架

    如果读者已经配置好开发环境(JDK,Eclipse 及 Maven 插件成功安装),则可以直接安装考拉插件来快速体验Koala4。否则请参考章节“安装与配置”进行安装与使用。

    Koala4 编码规范

    Koala4 编码规范

    Koala应用开发平台-其他

    Koala(考拉)是一个面向Java开发者的开源免费开发平台,以领域驱动设计范式为指导思想,以DDDLib框架为实现核心,提供KoalaUI前端框架、规范化项目管理工具OpenCI、在线领域建模工具、强大的组件库及可视化开发工具。...

    Koala编译器

    这是一个Koala编译器的网盘下载地址。 在Koala官网上下载此编译器需要花费大量时间,虽然只有几十M,但下载过的人应该知道,下载时动辄需要几个小时。 所以在此提供一个Koala的网盘共享,节省大家的下载时间。

    Koala应用开发平台 v4.0.0.zip

    Koala应用开发平台 v4.0.0.zip

    Koala Form 是一个表单页面的低代码解决方案

    它主要具备以下特点:高效的 ,从零开发一个完整的表单页面也许需要你花一天或者几个小时,而Koala From也许仅需几分钟,你需要做的就配置字段的展示规则。 简单的 ,内置基础的表单场景,useScene, useFrom、use...

    koala:轻松创建命令的快捷方式

    考拉 轻松创建命令的快捷方式。 目录 安装 npm: npm install -g usekoala 纱: yarn global add usekoala 的GitHub: ... 分叉项目 创建功能分支( git checkout -b feature/AwesomeFeature )

    Sass编译神器:koala

    Sass编译神器:koala 2.0.3

    koala_v2.0.4

    koala_v2.0.4.............................................................................

    Railsgem用于添加Facebook身份验证功能以使用koala进.zip

    Railsgem用于添加Facebook身份验证功能以使用koala进

    Koala-crx插件

    语言:English 肯尼(Kenny)考拉在每个新标签页上 在所有新标签页上选择“ Kenny Koala”。

    koala sass text

    koala sass text 后缀改为exe

    lesscss中文文档_编译工具koala

    lesscss中文文档和编译工具koala

    koala新版的

    koala是一个前端预处理器语言图形编译工具,Koala Mac版支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容windows、linux、mac。

    koala--Android-Plugin-Runtime-:Android插件平台

    koala Android插件平台 KOALA 该平台目前: ... 2、支持插件间互调。 3、支持本地库。 4、支持插件包资源访问。...2、MainApp:使用插件sdk的项目,调用插件的API来管理插件,asset目录下有测试的插件demo,项

Global site tag (gtag.js) - Google Analytics