- 浏览: 492207 次
-
文章分类
最新评论
-
ghpaas:
推荐使用GForms开发平台(http://blog.csdn ...
设置查看XForms的环境 -
ghpaas:
推荐使用GForms开发平台(http://blog.csdn ...
XForms简介 -
骑自行车去旅行:
不错
64 位 win7 使用PLSQL Developer -
clh137063363:
我的一直都没有问题,也是win7 64位的
64 位 win7 使用PLSQL Developer
使用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
koala依赖m2eclipse插件,请确保你的m2eclipse插件的版本为1.2以上。旧有的0.2版本的m2eclipse与koala存在不兼容的现象。 如果当前eclispe安装版本为0.2版本的m2eclipse,请先uninstall,再安装最新版本的m2eclipse。 |
确保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)。
下面是各领域类代码:
package org.foreveross.demo.core;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.dayatang.domain.BaseEntity;
@Entity
@Table (name
= "organizations" )
public class Organization extends BaseEntity
{
/**
*
*/
private static final long serialVersionUID
= 1946346499573992799L;
private String
name;
@Column (name
= "serial_number" )
private String
serialNumber;
@ManyToOne
@JoinColumn (name
= "address_id" )
private Address
address;
@OneToMany
private List<Employee>
employees;
public Address
getAddress() {
return address;
}
public void setAddress(Address
address) {
this .address
= address;
}
public List<Employee>
getEmployees() {
return employees;
}
public void setEmployees(List<Employee>
employees) {
this .employees
= employees;
}
public String
getName() {
return name;
}
public void setName(String
name) {
this .name
= name;
}
public String
getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String
serialNumber) {
this .serialNumber
= serialNumber;
}
@Override
public int hashCode()
{
final int prime
= 31 ;
int result
= 1 ;
result
= prime * result + ((getId() == null )
? 0 :
getId().hashCode());
return result;
}
@Override
public boolean equals(Object
obj) {
if ( this ==
obj)
return true ;
if (obj
== null )
return false ;
if (getClass()
!= obj.getClass())
return false ;
Organization
other = (Organization) obj;
if (getId()
== null )
{
if (other.getId()
!= null )
return false ;
} else if (!getId().equals(other.getId()))
return false ;
return true ;
}
public boolean existed()
{
return false ;
}
public boolean existed(String
arg0, Object arg1) {
return false ;
}
public boolean notExisted()
{
return false ;
}
|
package org.foreveross.demo.core;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.dayatang.domain.BaseEntity;
@Entity
@Table (name
= "addresses" )
public class Address extends BaseEntity
{
/**
*
*/
private static final long serialVersionUID
= -208372668032795503L;
private String
country;
private String
province;
private String
city;
public String
getCountry() {
return country;
}
public void setCountry(String
country) {
this .country
= country;
}
public String
getProvince() {
return province;
}
public void setProvince(String
province) {
this .province
= province;
}
public String
getCity() {
return city;
}
public void setCity(String
city) {
this .city
= city;
}
@Override
public int hashCode()
{
final int prime
= 31 ;
int result
= 1 ;
result
= prime * result + ((getId() == null )
? 0 :
getId().hashCode());
return result;
}
@Override
public boolean equals(Object
obj) {
if ( this ==
obj)
return true ;
if (obj
== null )
return false ;
if (getClass()
!= obj.getClass())
return false ;
Address
other = (Address) obj;
if (getId()
== null )
{
if (other.getId()
!= null )
return false ;
} else if (!getId().equals(other.getId()))
return false ;
return true ;
}
public boolean existed()
{
return false ;
}
public boolean existed(String
arg0, Object arg1) {
return false ;
}
public boolean notExisted()
{
return false ;
}
}
|
package org.foreveross.demo.core;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.dayatang.domain.BaseEntity;
@Entity
@Table (name
= "employees" )
public class Employee extends BaseEntity
{
/**
*
*/
private static final long serialVersionUID
= 7289549346393758637L;
private String
name;
private int age;
private String
gender;
public String
getName() {
return name;
}
public void setName(String
name) {
this .name
= name;
}
public int getAge()
{
return age;
}
public void setAge( int age)
{
this .age
= age;
}
public String
getGender() {
return gender;
}
public void setGender(String
gender) {
this .gender
= gender;
}
@Override
public int hashCode()
{
final int prime
= 31 ;
int result
= 1 ;
result
= prime * result + ((getId() == null )
? 0 :
getId().hashCode());
return result;
}
@Override
public boolean equals(Object
obj) {
if ( this ==
obj)
return true ;
if (obj
== null )
return false ;
if (getClass()
!= obj.getClass())
return false ;
Employee
other = (Employee) obj;
if (getId()
== null )
{
if (other.getId()
!= null )
return false ;
} else if (!getId().equals(other.getId()))
return false ;
return true ;
}
public boolean existed()
{
return false ;
}
public boolean existed(String
arg0, Object arg1) {
return false ;
}
public boolean notExisted()
{
return false ;
}
}
|
其中要注意的是,领域类需要在类名前加上@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
koala依赖m2eclipse插件,请确保你的m2eclipse插件的版本为1.2以上。旧有的0.2版本的m2eclipse与koala存在不兼容的现象。 如果当前eclispe安装版本为0.2版本的m2eclipse,请先uninstall,再安装最新版本的m2eclipse。 |
确保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)。
下面是各领域类代码:
package org.foreveross.demo.core;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.dayatang.domain.BaseEntity;
@Entity
@Table (name
= "organizations" )
public class Organization extends BaseEntity
{
/**
*
*/
private static final long serialVersionUID
= 1946346499573992799L;
private String
name;
@Column (name
= "serial_number" )
private String
serialNumber;
@ManyToOne
@JoinColumn (name
= "address_id" )
private Address
address;
@OneToMany
private List<Employee>
employees;
public Address
getAddress() {
return address;
}
public void setAddress(Address
address) {
this .address
= address;
}
public List<Employee>
getEmployees() {
return employees;
}
public void setEmployees(List<Employee>
employees) {
this .employees
= employees;
}
public String
getName() {
return name;
}
public void setName(String
name) {
this .name
= name;
}
public String
getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String
serialNumber) {
this .serialNumber
= serialNumber;
}
@Override
public int hashCode()
{
final int prime
= 31 ;
int result
= 1 ;
result
= prime * result + ((getId() == null )
? 0 :
getId().hashCode());
return result;
}
@Override
public boolean equals(Object
obj) {
if ( this ==
obj)
return true ;
if (obj
== null )
return false ;
if (getClass()
!= obj.getClass())
return false ;
Organization
other = (Organization) obj;
if (getId()
== null )
{
if (other.getId()
!= null )
return false ;
} else if (!getId().equals(other.getId()))
return false ;
return true ;
}
public boolean existed()
{
return false ;
}
public boolean existed(String
arg0, Object arg1) {
return false ;
}
public boolean notExisted()
{
return false ;
}
|
package org.foreveross.demo.core;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.dayatang.domain.BaseEntity;
@Entity
@Table (name
= "addresses" )
public class Address extends BaseEntity
{
/**
*
*/
private static final long serialVersionUID
= -208372668032795503L;
private String
country;
private String
province;
private String
city;
public String
getCountry() {
return country;
}
public void setCountry(String
country) {
this .country
= country;
}
public String
getProvince() {
return province;
}
public void setProvince(String
province) {
this .province
= province;
}
public String
getCity() {
return city;
}
public void setCity(String
city) {
this .city
= city;
}
@Override
public int hashCode()
{
final int prime
= 31 ;
int result
= 1 ;
result
= prime * result + ((getId() == null )
? 0 :
getId().hashCode());
return result;
}
@Override
public boolean equals(Object
obj) {
if ( this ==
obj)
return true ;
if (obj
== null )
return false ;
if (getClass()
!= obj.getClass())
return false ;
Address
other = (Address) obj;
if (getId()
== null )
{
if (other.getId()
!= null )
return false ;
} else if (!getId().equals(other.getId()))
return false ;
return true ;
}
public boolean existed()
{
return false ;
}
public boolean existed(String
arg0, Object arg1) {
return false ;
}
public boolean notExisted()
{
return false ;
}
}
|
package org.foreveross.demo.core;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.dayatang.domain.BaseEntity;
@Entity
@Table (name
= "employees" )
public class Employee extends BaseEntity
{
/**
*
*/
private static final long serialVersionUID
= 7289549346393758637L;
private String
name;
private int age;
private String
gender;
public String
getName() {
return name;
}
public void setName(String
name) {
this .name
= name;
}
public int getAge()
{
return age;
}
public void setAge( int age)
{
this .age
= age;
}
public String
getGender() {
return gender;
}
public void setGender(String
gender) {
this .gender
= gender;
}
@Override
public int hashCode()
{
final int prime
= 31 ;
int result
= 1 ;
result
= prime * result + ((getId() == null )
? 0 :
getId().hashCode());
return result;
}
@Override
public boolean equals(Object
obj) {
if ( this ==
obj)
return true ;
if (obj
== null )
return false ;
if (getClass()
!= obj.getClass())
return false ;
Employee
other = (Employee) obj;
if (getId()
== null )
{
if (other.getId()
!= null )
return false ;
} else if (!getId().equals(other.getId()))
return false ;
return true ;
}
public boolean existed()
{
return false ;
}
public boolean existed(String
arg0, Object arg1) {
return false ;
}
public boolean notExisted()
{
return false ;
}
}
|
其中要注意的是,领域类需要在类名前加上@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插件从项目创建,业务开发到打包发布的简单项目过程。
相关推荐
Koala(考拉)是一个面向Java开发者的开源免费开发平台,以领域驱动设计范 式为指导思想,以DDDLib框架为实现核心,提供KoalaUI前端框架、规 范化项目管理工具OpenCI、在线领域建模工具、强大的组件库及可视化 开发...
1.重构Eclipse插件,更好的易用性,支持一键运行等 2.创建项目支持子系统源代码集成 3.创建项目生成新的分层模型,符合领域驱动设计分层 4.DDDLib升级到4.3.6版本,JPA注解标注在字段上 5.权限子系统重构,支持细...
完成插件安装后,就可以开始创建新的Koala项目了: 1. **创建项目**: - 在Eclipse中依次点击`File -> New -> Project -> Koala -> Koala Project`。 - 输入项目的基本信息,如项目名称等,然后点击`Next`。 - ...
koala插件
2. **创建项目**:启动Koala后,点击右上角的"+"按钮,选择要监控的源文件目录和输出的CSS目录,然后设置编译选项(如是否开启实时编译、是否压缩CSS等)。 3. **配置Sass**:在项目设置中,确保Sass的路径正确,...
1. 软件开发:koala软件可能是某个开发者或团队为特定目的创建的一个工具,比如项目管理、代码编辑、自动化测试等。软件开发中,开发者经常会创建自定义工具以提高效率,这些工具可能具有独特的功能,如koala,它...
下载并解压后,按照步骤安装,你就可以在自己的开发环境中使用Koala,享受它带来的预处理器编译便利。 总的来说,Koala是一款强大的预处理器编译工具,支持Less、Sass、CoffeeScript和Compass Framework,对于前端...
"Koala应用开发平台 v4.0.0.zip" 是一个包含源代码和相关文档的压缩包,主要用于软件开发,尤其是针对初学者或者进行毕业设计论文的开发者。这个平台可能是一个集成化的开发环境,旨在简化应用的创建过程,提供便利...
安装完成后,添加需要处理的项目文件,设置好相关选项,koala就会开始工作,成为你开发过程中的得力助手。 总结来说,koala是一款高效、易用的CSS转换工具,它将Less、Sass和CoffeeScript的便利性与实时编译的高效...
koala是一个前端预处理器语言图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容windows、linux、mac。
例如,它可能使用`chrome.tabs` API来监听新标签页的创建事件,然后在新标签页加载完成后展示定制的内容。此外,插件可能还利用了`chrome.storage` API来保存用户的设置或偏好,以及`chrome.runtime` API来处理插件...
总之,学习和使用LessCSS结合Koala这样的编译工具,是现代前端开发中的常见实践,能够提高代码质量和开发效率,同时让CSS更具可维护性和可读性。无论是初学者还是经验丰富的开发者,都应该掌握这一技能。
Koala4编码规范旨在为项目的编程风格提供一套统一的指导原则,确保代码的一致性、可读性和可维护性。本文档详细介绍了Koala项目的源文件、命名规范、模块约定等方面的要求。 #### 二、源文件规范 **2.1 文件编码**...
安装完成后,打开koala,添加需要编译的项目文件夹,然后配置编译设置,如输出目录、是否开启自动刷新等。完成设置后,koala会自动监控并处理指定目录下的源文件。 总结来说,koala作为一款强大的前端编译工具,...
在使用Koala时,开发者可以配置项目路径,指定要监听的文件或文件夹,Koala会在源代码改变时自动编译并生成CSS文件,省去了手动编译的步骤。同时,Koala还具备实时刷新功能,当CSS文件更新时,连接的浏览器会自动...
Koala(考拉)是一个面向Java开发者的开源免费开发平台,以领域驱动设计范式为指导思想,以DDDLib框架为实现核心,提供KoalaUI前端框架、规范化项目管理工具OpenCI、在线领域建模工具、强大的组件库及可视化开发工具。...
本文将深入探讨Python库的构建、打包和发布过程,以及如何利用koala2-0.0.33这个库来提升我们的开发效率。 首先,Python库是Python编程中的基本组成部分,它们包含了可重用的代码模块,帮助开发者解决特定问题或...
【Koala通用频率控制系统】是一个使用Go语言开发的高性能后端服务,专门设计用于处理用户的频率控制需求,尤其在防止网络欺诈和垃圾信息方面。系统的核心在于它将控制策略完全配置化,与业务逻辑解耦,通过HTTP接口...
Android Studio Koala Feature Drop 2024.1.2(android-studio-2024.1.2.12-linux.tar.gz)适用于Linux系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: ...