寻找文件的方式最后是通过ComponentConfig.java的getURL方法来解析的
public URL getURL(String resourceLoaderName, String location) throws ComponentException {
ResourceLoaderInfo resourceLoaderInfo = resourceLoaderInfos.get(resourceLoaderName);
if (resourceLoaderInfo == null) {
throw new ComponentException("Could not find resource-loader named: " + resourceLoaderName);
}
if ("component".equals(resourceLoaderInfo.type) || "file".equals(resourceLoaderInfo.type)) {
//如果是<resource-loader name="main" type="component" />
String fullLocation = getFullLocation(resourceLoaderName, location);
URL fileUrl = UtilURL.fromFilename(fullLocation);
if (fileUrl == null) {
throw new ComponentException("File Resource not found: " + fullLocation);
}
return fileUrl;
} else if ("classpath".equals(resourceLoaderInfo.type)) {
String fullLocation = getFullLocation(resourceLoaderName, location);
URL url = UtilURL.fromResource(fullLocation);
if (url == null) {
throw new ComponentException("Classpath Resource not found: " + fullLocation);
}
return url;
} else if ("url".equals(resourceLoaderInfo.type)) {
String fullLocation = getFullLocation(resourceLoaderName, location);
URL url = null;
try {
url = FlexibleLocation.resolveLocation(location);
} catch (java.net.MalformedURLException e) {
throw new ComponentException("Error with malformed URL while trying to load URL resource at location [" + fullLocation + "]", e);
}
if (url == null) {
throw new ComponentException("URL Resource not found: " + fullLocation);
}
return url;
} else {
throw new ComponentException("The resource-loader type is not recognized: " + resourceLoaderInfo.type);
}
}
其中主要是看
就是用getFullLocation(resourceLoaderName, location);方法
它做的事是判断如果类型是component,就进行rootLocation+location。而rootLocation就是组建所在路径,而location就是我们的entity-resource或者service-resource等等设置的location。
另外这个方法还有几个操作,判断是否要使用prependEnv,如果使用,会添加上prependEnv
if (UtilValidate.isNotEmpty(resourceLoaderInfo.prependEnv)) {
String propValue = System.getProperty(resourceLoaderInfo.prependEnv);
if (propValue == null) {
String errMsg = "The Java environment (-Dxxx=yyy) variable with name " + resourceLoaderInfo.prependEnv + " is not set, cannot load resource.";
Debug.logError(errMsg, module);
throw new IllegalArgumentException(errMsg);
}
buf.append(propValue);
}
//判断是否要添加prefix
if (UtilValidate.isNotEmpty(resourceLoaderInfo.prefix)) {
buf.append(resourceLoaderInfo.prefix);
}
由此可以得出,resource-loader元素的完整配置是
<resource-loader name="main" type="component" prepend-env="" prefix=""/>
分享到:
相关推荐
最新版OFBiz,apache-ofbiz-16.11.05,apache-ofbiz-16.11.05
apache-ofbiz-13.07.02.zip
apache-ofbiz-16.11.02.zip,ofbiz菜鸟笔记,Apache+OFBiz+开发初学者指南.chm
OFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.doc
在本文中,我们将深入了解如何使用Business Intelligence Reporting Tools (BIRT)与Open For Business (OFBiz)框架集成,以生成专业外观的报告。BIRT是一个强大的工具套件,用于从数据库生成报告,它可以无缝地集成...
不用解压ofbiz-entry-zh-cn.zip 直接把zip修改为doc 即可。 ofbiz-entry-zh-cn.doc 博文链接:https://jiasudu.iteye.com/blog/157892
Apache OFBiz 是用于企业流程自动化的开源产品,包括 ERP(企业资源规划)、CRM(客户关系管理)、电子商务/电子商务、SCM(供应链管理)、MRP(制造资源规划)、MMS / EAM(维护管理系统/企业资产管理)的框架组件...
ofbiz 的源代码和工程,这个是9版本的。
component-loader.xsd
2. 在"hot-deploy/practice"目录下,创建一个名为"ofbiz-component.xml"的组件配置文件。这个文件包含了组件的元数据,告诉Ofbiz如何加载和管理你的组件。文件内容如下: ```xml <ofbiz-component name="practice" ...
`ofbiz-component.xml`是应用程序的核心配置文件,它指定了数据模型(`<entity-resource>`)、业务逻辑(`<service-resource>`)和Web应用程序(`<webapp>`)的位置。通过这些配置,Ofbiz知道如何查找并执行相关的...
OFBiz是一个十分有名的框架,这是他的16版本代码,OFBiz可用于开发ERP,支持网站,分为前端Widget,中间Service/ServiceEngine,后台Entity/EntityEngine.
在本文中,我们将探讨Ofbiz的一些核心概念,以及如何利用`component-load.xml`配置文件和`practice`目录中的资源进行开发实践。 1. **Ofbiz框架介绍** Ofbiz是由Apache软件基金会维护的一个项目,它基于Java技术,...
Apache OFBiz 是用于企业流程自动化的开源产品,包括 ERP(企业资源规划)、CRM(客户关系管理)、电子商务/电子商务、SCM(供应链管理)、MRP(制造资源规划)、MMS / EAM(维护管理系统/企业资产管理)的框架组件...
这个模型是用XML来定义的,它描述了数据库中的表结构以及实体之间的关系。 **Budget Entity** `Budget`实体是预算系统的核心,它由以下字段组成: 1. `budgetId`(主键):预算的唯一标识符,类型为VARCHAR(20)。 2...
每个组件目录下的`ofbiz-component.xml`文件描述了组件的相关属性,包括entity-resource的定义、测试用例的位置、类路径设置以及服务资源等。对于应用程序(APP),组件还能定义其虚拟路径,使得在系统中可以方便地...
Apache OFBiz 是用于企业流程自动化的开源产品,包括 ERP(企业资源规划)、CRM(客户关系管理)、电子商务/电子商务、SCM(供应链管理)、MRP(制造资源规划)、MMS / EAM(维护管理系统/企业资产管理)的框架组件...