创建热部署模块

参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide

In this part, you will learn how to create and load your own custom component and add first screen that shows “This is practice application”

1 在目录hot-deploy下创建目录practice(即为要创建的模块名称)

2 在目录hot-deploy/practice下创建文件ofbiz-component.xml

 <?xml version="1.0" encoding="UTF-8"?>
<ofbiz-component name="practice"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">
<resource-loader name="main" type="component"/>
<webapp name="practice"
title="Practice"
server="default-server"
base-permission="OFBTOOLS"
location="webapp/practice"
mount-point="/practice"
app-bar-display="false"/>
</ofbiz-component>

2.1 ofbiz-component.xml文件说明:

a. ofbiz通过ofbiz-component.xml文件识别此模块

b. 节点(resource-loader name)可以灵活设置,此处设置为main。type告诉ofbiz我们要加载一个component

 <resource-loader name="main" type="component"/>

c. 节点webapp有很多属性,通常如下:

 <webapp name="practice"
title="Practice"
server="default-server"
base-permission="OFBTOOLS"
location="webapp/practice"
mount-point="/practice"
app-bar-display="false"/>

  name :  web应用名称。

  title : 应用的标题,将被展示在顶部导航中。

  server : ofbiz通过此处值知道使用的是什么server。

  base-permission :

  location : 默认跟路径

  mount-point : 访问此服务的URL,本例中应为:localhost:8080/practice。

  app-bar-display :

3 创建 web app

3.1 创建webapp文件夹

在目录hot-deploy/practice下创建文件夹webapp,这个目录下包括模块的所有webapp相关文件。

webapp下内容遵循J2EE webapp标准。

3.2 创建practice文件夹

在目录hot-deploy/practice/webapp下创建文件夹practice(为webapp名称)。

注意:一个模块可以有多个webapp,例如marketing模块有两个webappp(marketing和sfa);

3.3 创建WEB-INF文件夹

在目录hot-deploy/practice/webapp/practice下创建WEB-INF文件夹:

一个OFBiz web application 需要放置两个配置文件(controller.xml 和 web.xml )。

a. controller.xml : 告诉OFBiz一个请求过来该如何处理,通过哪个action去处理,通过那个page去渲染。

b. web.xml : 告诉OFBiz 此web applation 可用的资源(database and business logic access),怎样去处理web相关问题,比如欢迎页面、重定向、错误页面等。

3.4 创建web.xml(web.xml遵循J2EE的webapp规格)


 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>webSiteId</param-name>
<param-value>PRACTICE</param-value>
<description>A unique ID used to look up the WebSite entity to get
information about catalogs, etc.</description>
</context-param>
<context-param>
<param-name>localDispatcherName</param-name>
<param-value>practice</param-value>
<description>A unique name used to identify/recognize the local
dispatcher for the Service Engine</description>
</context-param>
<context-param>
<param-name>mainDecoratorLocation</param-name>
<param-value>component://practice/widget/PracticeScreens.xml</param-value>
<!-- change the path to the following if the above doesn't work for you -->
<!-- <param-value>component://practice/webapp/practice/widget/PracticeScreens.xml</param-value> -->
<description>The location of the main-decorator screen to use for this
webapp; referred to as a context variable in screen def XML files.</description>
</context-param> <filter>
<filter-name>ContextFilter</filter-name>
<display-name>ContextFilter</display-name>
<filter-class>org.ofbiz.webapp.control.ContextFilter</filter-class>
<init-param><param-name>disableContextSecurity</param-name><param-value>N</param-value></init-param>
<init-param>
<param-name>allowedPaths</param-name>
<param-value>/error:/control:/select:/index.html:/index.jsp:/default.html:/default.jsp:/images:/includes/maincss.css</param-value>
</init-param>
<init-param>
<param-name>errorCode</param-name>
<param-value>403</param-value>
</init-param>
<init-param>
<param-name>redirectPath</param-name>
<param-value>/control/main</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <servlet>
<servlet-name>ControlServlet</servlet-name>
<display-name>ControlServlet</display-name>
<description>Main Control Servlet</description>
<servlet-class>org.ofbiz.webapp.control.ControlServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ControlServlet</servlet-name>
<url-pattern>/control/*</url-pattern>
</servlet-mapping> <session-config>
<session-timeout>60</session-timeout><!-- in minutes -->
</session-config> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>

3.5 创建controller.xml

 <?xml version="1.0" encoding="UTF-8"?>
<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd">
<include location="component://common/webcommon/WEB-INF/common-controller.xml"/>
<description>Practice Component Site Configuration File</description>
<owner>Copyright 2001-2009 The Apache Software Foundation</owner>
<handler name="screen" type="view" class="org.ofbiz.widget.screen.ScreenWidgetViewHandler"/>
<!-- Request Mappings -->
<request-map uri="main">
<security https="false" auth="false"/>
<response name="success" type="view" value="main"/>
</request-map>
<!-- end of request mappings -->
<!-- View Mappings -->
<view-map name="main" type="screen" page="component://practice/widget/PracticeScreens.xml#main"/>
<!-- change the path to the following if the above doesn't work for you -->
<!-- <view-map name="main" type="screen" page="component://practice/webapp/practice/widget/PracticeScreens.xml#main"/> --> <!-- end of view mappings -->
</site-conf>

3.6 创建error文件夹

在目录hot-deploy/practice/webapp/practice下创建文件夹error,并且在此文件夹创建error.jsp

3.7 创建widget文件夹

在目录hot-deploy/practice下创建文件夹widget,并且创建PracticeScreens.xml文件

 <?xml version="1.0" encoding="UTF-8"?>
<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
<screen name="main">
<section>
<widgets>
<label text="This is first practice"/>
</widgets>
</section>
</screen>
</screens>

3.8 运行

http://localhost:8080/practice/control/main

OFBiz进阶之HelloWorld(一)创建热部署模块的更多相关文章

  1. OFBiz进阶之HelloWorld(二)创建热部署模块

    参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guid ...

  2. OFBiz进阶之HelloWorld(五)创建新实体

    参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guid ...

  3. OFBiz进阶之HelloWorld(三)CRUD操作

    参考文档 https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guid ...

  4. Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools)

    热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各 ...

  5. spring boot修改代码后无需重启设置,在开发时实现热部署

    Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools) 热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构, ...

  6. idea热部署

    <!-- 热部署模块 --> <dependency> <groupId>org.springframework.boot</groupId> < ...

  7. 添加spring-boot-devtools热部署报错

    使用的eclipse部署的spring boot,百度了下,大部分的问题都是说IDE工具使用热部署无法成功的解决方案,看了很懵逼 <!-- 热部署模块 --> <dependency ...

  8. Spring Boot 系列(六)web开发-Spring Boot 热部署

    Spring Boot 热部署 实际开发中,修改某个页面数据或逻辑功能都需要重启应用.这无形中降低了开发效率,所以使用热部署是十分必要的. 什么是热部署? 应用启动后会把编译好的Class文件加载的虚 ...

  9. springboot实现热部署,修改代码不用重启服务

    1.引入热部署依赖 <!-- 热部署模块 --> <dependency> <groupId>org.springframework.boot</groupI ...

随机推荐

  1. javascript调试 console

    Console命令详解,让调试js代码变得更简单   Firebug是网页开发的利器,能够极大地提升工作效率. 但是,它不太容易上手.我曾经翻译过一篇<Firebug入门指南>,介绍了一些 ...

  2. Js_分页

    public ActionResult Index(int? pageIndex) { List<string> data = new List<string>(); ; i ...

  3. php面试常用算法

    这些都是真实的IT公司招聘PHP程序员的面试题,这些都是简单的基本算法.包括:冒泡算法.快速排序算法.二分查找算法.顺序算法. 冒泡排序,对象可以是一个数组 01 function bubble_so ...

  4. OC中-数组是如何遍历的?

    #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool ...

  5. 控制器跳转:tabbarcontroller怎么写代码切换视图?

    项目中有时候需要在界面中进行跳转  常用的有push  present等方法  但想要在tabbarcontroller的某个子控制器跳转到另一个子控制器  怎么做? 只需要一行代码: 1是你需要跳转 ...

  6. WebSocket实时异步通信

    WebSocket实时异步通信 [一]WebSocket简介 WebSocket是HTML5推出一个协议规范,用来B/S模式中服务器端和客户端之间进行实时异步通信. 众所周知,传统的HTTP协议中,服 ...

  7. matlab的legend用法

    用Matlab画图时,有时候需要对各种图标进行标注,例如,用“+”代表A的运动情况,“*”代表B的运动情况. legend函数的基本用法是: LEGEND(string1,string2,string ...

  8. ASP.NET MVC中的统一化自定义异常处理

    当ASP.NET MVC程序出现了异常,怎么处理更加规范? 1. 最简单的方法是设置<customErrors/>节点 <customErrors>节点用于定义一些自定义错误信 ...

  9. Android之Http网络编程(二)

    上一篇文章简单的介绍了Android中http的两种通信方式,并且分别用获取百度网页做了实例.但是在实际应用中,更多的是客户端通过请求的参数来实现在服务端的具体操作,并最终返回数据给客户端.因为我们不 ...

  10. ### 线性回归(Regression)

    linear regression logistic regression softmax regression #@author: gr #@date: 2014-01-21 #@email: fo ...