首页
学习
活动
专区
圈层
工具
发布

「数字体验」Liferay数字体验平台(DXP)的好处

在这篇文章中,我们将挑选一些Liferay DXP的新功能,并对它们进行详细的探讨。 模块化: 这实际上意味着Liferay的每个模块(特性)现在都是联合的,可以从核心Liferay安装中分离出来。...架构在非常基础的层次上发生了变化,应用程序被划分为使用OSGi框架的不同包。这几乎改变了Liferay的所有工作方式。...您可以生产和消费您想要的服务 谁受益最大: 再次重申,更大规模的部署将受益最大。在DevOps管理的生态系统中,更容易排除故障并隔离出现故障的服务。...您将创建功能丰富并以惊人速度运行的应用程序。 谁受益最大: 每个人。谁不喜欢快速浏览体验呢! 覆盖EXT和Hook DXP现在提供了OSGi包/模块和服务的抽象实现。...最初,liferay的主要核心类只能通过EXT或hook覆盖。现在在Liferay 7中,所有东西都是一个包,你只需要覆盖你想要的包。这使得定制更快,并且只定制我们想要的。

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    现在该用 Java 12,还是坚持 Java 11?

    可能你会觉得这是一个无关紧要的问题,但对于那些需要在 JVM 中使用 Java 的开发者,或是比较看重 Java 新特性的开发者,这是一项十分重要的决策。这篇文章将和大家就这个问题进行相关的分析。...对未来的预测 如果已经阅读了上面的列表,并且你的代码和流程可以应对。这十分好,但更重要的是要明白,你也在限制未来进行改变的能力。...和相关的 maven 插件 OSGi bundle metadata tool Bytecode 工具(Byte buddy / ASM etc) 超过 100 个 jar 包依赖项 说了这么多,作者当然不是鼓励大家不进行升级...作为典型软件供应商的一个例子,Liferay 声明如下: Liferay 已决定不会对 JDK 的每个主要版本进行认证。我们将选择遵循 Oracle 的主导并仅认证标记为 LTS 的版本。...—— Liferay博客 总结 相信肯定已经有开发团队采用了新版本的 Java,但希望他们是经过思考判断之后做出的决定。

    1.1K20

    sofa-ark类隔离技术分析调研

    不过坏处就是缺少了灵活性,业务方无法修改组件包的任何依赖。 OSGI技术 使用OSGI技术,用felix、karaf或者Jigsaw这样的容器对jar包进行暴露和隔离。...OSGI技术实际上是对代码进行了更高一级的抽象,将“模块”作为一个基本单位,用Bundle包对jar包再进行一级权限管理,将一些导入或导出的资源配置在Manifest文件里。...-- 打包插件时,排除和指定 artifactId 相同的包依赖 --> ...Ark Container可以被理解为OSGI中的那个守护进程,用来管理业务包和插件包,只不过Ark Container不是一个守护进程而只是一个启动类罢了。...在IDE中启动时,由于主类的静态代码块是会在容器启动之前就会加载一次的。

    2.2K31

    逃逸安全的模板沙箱(一)——FreeMarker(上)

    笔者前期主要是对 Liferay 的 FreeMarker 引擎进行了调试分析,故本文先以 FreeMarker 为例,梳理该模板引擎 SSTI 漏洞的前世今生,同时叙述自己的 Liferay FreeMarker...SSTI 漏洞踩坑历程及对 Liferay 安全机制的分析。...freemarker.template.utility包中存在三个符合条件的类,分别为Execute类、ObjectConstructor类、JythonRuntime类。...可以看出这是Liferay赋予模板沙箱的主要安全机制。 可以看到,重点在于如何找到暴露出的对象,其次思考如何利用这些对象绕过Liferay的安全机制。 我们在编辑模板时,会看到一个代码提示框。...至此,利用思路在 Liferay 的安全机制下全部惨败。Liferay 健全的黑白名单机制,从根源上限制了大多数攻击思路的利用,可谓是“攻不破”的铜墙铁壁。

    2.9K20

    maven依赖中scope=compile和provided区别

    在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact...那么最后我们要吧ProjectABC部署到Liferay服务器上了,这时候,我们到$liferay-tomcat-home\webapps\ROOT\WEB-INF\lib下发现,里面已经有了一个portal-impl.jar...做一个实验就可以很容易发现,当我们用maven install生成最终的构件包ProjectABC.war后,在其下的WEB-INF/lib中,会包含我们被标注为scope=compile的构件的jar...包,而不会包含我们被标注为scope=provided的构件的jar包。...:tomcat中也有servlet-api包,这样,发生了冲突 解决方法:添加provided,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了,完整依赖如下

    3.4K20

    Dubbo 常见错误及解决方法

    排查步骤 访问注册中心的 Ops 系统,查询对应的服务是否有提供者列表;同时检查调用者应用所在服务器的日志(一般每种注册服务的客户端都会有对应的日志记录),查看是否有地址信息的推送/拉取记录。...超时的发生很可能意味着调用端或者服务端的资源(CPU,内存或者网络)出现了瓶颈,需要检查服务端的问题还是调用端的问题来排除GC抖动等嫌疑。 检查服务端的网络质量,比如重传率来排除网络嫌疑。...借助链路跟踪的分析服务(比如阿里的 ARMS,开源的 OpenTracing 系的实现 Zipkin、SkyWalking 等)来分析下各个点的耗时情况。...启动时 Configuration problem: Unable to locate Spring NamespaceHandler for XML schema ---- 表示 Spring 找不到...通常是 Dubbo 的 jar 包没有被引入,请添加对 Dubbo 的依赖;或者是 ClassLoader 隔离,查看是否有使用 OSGI 或其它热加载机制。

    2.4K20

    包冲突排查指南:从发现到解决的全流程实战

    ;新增一个依赖后,原有功能突然抛出 NoSuchMethodError;甚至启动时直接出现 ClassCastException(同一类被不同类加载器加载)。...方案 1:排除冲突依赖(最常用,优先尝试)核心思路:在引入冲突包的依赖中,通过 exclusions(Maven)或 exclude(Gradle)排除不需要的版本,只保留一个兼容版本。...(2)实现方式方法 1:使用 OSGi 框架(如 Apache Felix、Eclipse Equinox):将应用拆分为多个 OSGi bundle,每个 bundle 有独立的类加载器,可引入不同版本的依赖...四、常见坑与避坑指南间接依赖冲突:只排除了直接依赖的冲突包,忽略了间接传递依赖(如 a→b→c→common:1.0.0,需在 a 或 b 中排除 common);版本兼容误区:认为 “高版本一定兼容低版本...总结:包冲突解决的核心原则先定位根源:用依赖树、类加载日志找到冲突的包来源和版本,不盲目排除依赖;优先简单方案:排除冲突依赖 > 强制指定版本 > 调整顺序 > 类加载隔离,尽量选择侵入性低的方案;兼顾兼容性

    42810

    Dubbo框架常见问题

    配置的解析处理器。通常是 Dubbo 的 jar 包没有被引入,请添加对 Dubbo 的依赖;或者是 ClassLoader 隔离,查看是否有使用 OSGI 或其它热加载机制。 ?...(Ljava/util/Map;)V Dubbo 应用使用 ZooKeeper 作为注册中心,启动时发生该异常。...超时的发生很可能意味着调用端或者服务端的资源(CPU,内存或者网络)出现了瓶颈,需要检查服务端的问题还是调用端的问题来排除GC抖动等嫌疑。•检查服务端的网络质量,比如重传率来排除网络嫌疑。...10、Dubbo 应用使用 ZooKeeper 作为注册中心,启动时报该异常。...11、启动时服务是否注册检查,这种情况一般在预发环境遇到,有些业务部门的服务没有部署预发环境,会导致我们的应用在预发环境启动不了,启动时需要取消检查。

    1.2K50

    Maven依赖Jar冲突排查及解决

    依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成了包版本冲突。...一级依赖中,后声明的依赖会覆盖先声明的依赖,并且如果是前面的版本低后面的版本高会显示冲突,反之却不会显示冲突; 解决冲突的方式 根据优先原则,把需要的版本放在路径最短的位置或最先声明 排除其他版本的依赖...在解决冲突的时候直接把红色的排除是不对的,因为红色的本身就是冲突时被忽略的版本。...,但遇到必须使用不同版本jar包时,就不行了 sofa-ark 用FatJar技术去实现OSGI的功能,jar包隔离原理上跟osgi一致,不过基于fat jar技术,通过maven 插件来简化复杂度,比较轻量...jar包里的包名,来达到解决冲突的目的。

    3.2K40

    深入探索Java类加载与字节码技术:双亲委派破坏、SPI机制与OSGi类加载隔离

    类空间(Class Space)的实现原理 OSGi通过"类空间"概念实现逻辑隔离,每个Bundle的类空间由三部分组成: 本地类路径(Bundle-ClassPath) 显式导入的包(Import-Package...当BundleA需要加载com.example.service时,OSGi容器会: 检查BundleA的本地JAR是否包含该类 查询已解析的导入声明,找到导出该包的BundleB 通过BundleB的类加载器获取类定义...动态更新的关键技术 OSGi的类加载隔离为热部署提供了基础支持,其动态更新过程涉及以下关键技术点: 版本化类加载:每个Bundle带有版本号,同一包的不同版本可以共存 类加载器置换:更新Bundle时会创建新的类加载器实例...现代OSGi容器如Knopflerfish提供了增强型诊断工具: 类来源追踪功能 Bundle依赖图谱可视化 类加载路径记录器 依赖地狱的新形态 虽然解决了传统JAR冲突,但可能出现包级依赖死锁。...与Java模块系统的比较 Java 9引入的JPMS模块系统与OSGi在类隔离方面存在显著差异: 隔离粒度:JPMS基于模块,OSGi基于Bundle(可包含多个包) 可见性控制:JPMS使用exports

    51310

    【Java编程进阶之路 04】深入探索:Java类加载器与双亲委派 & 打破双亲委派桎梏

    5.3 使用Java Agent和Instrumentation API Java Agent是一种特殊的JAR文件,可以在JVM启动时或运行时被加载。...Java Agent是一个特殊的JAR文件,它包含一个特殊的类,即premain方法,它在JVM启动时被调用。使用Java Agent,我们可以在类被加载到JVM之前修改其字节码。...premain方法将在JVM启动时被调用,并且可以在类加载之前应用转换。...定义导出和导入的包:在你的bundle的manifest文件中,你需要定义哪些包应该被导出(供其他bundles使用)和哪些包应该被导入(从你的bundles中使用)。...使用OSGi类加载器:在OSGi环境中,你的代码将自动使用bundle的类加载器来加载类。

    50511

    虚拟机类加载机制

    使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化。...当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类初始化。 当虚拟机启动时,用户需要指定一个要执行的主类,虚拟机会先初始化这个主类。...OSGi:灵活的类加载器架构 OSGi(Open Service Gateway Initiative)是OSGi联盟制定的一个基于java语言的动态模块化规范。...OSGi在java程序员中最著名的应用案例就Eclipse IDE,另外还有许多大型的软件平台和中间件服务器都基于或声明将会基于OSGi规范来实现。...OSGi的Bundle类加载器之间只有规则,没有固定的委派关系。

    93800

    模块化服务规范——OSGI

    这个框架实现了一个优雅、完整和动态的组件模型。应用程序(称为bundle)无需重新引导可以被远程安装、启动、升级和卸载(其中Java包/类的管理被详细定义)。...2、JAR文件规范粒度太粗,没有足够的约束力。运行期,如果这些第三方Jar包不存在,或者命名存在差异,或者提供了不同JAR包版本,则会出现各种不同结果。...3、由于Java EE平台规范没有针对Java package引入版本支持,这使得在同一企业应用中几乎不可能启用同一JAR包的不同版本。...很显然,这给维护工作带来挑战,毕竟升级或修改WAR包中的任何内容都可能会波及到整个WAR包。...这就要求,每次升级生产环境之前,都必须对整个WAR包的各个方面进行完整的回归测试,进而增加了不必要的维护成本,包括人力和物力成本。

    2.1K30

    OSGi的模块化和动态模块的好处

    1、减少复杂性 利用OSGi技术进行开发意味着软件包的开发:OSGI组件、软件包和模块。它们隐藏它们的内部实现,通过已经定义好的服务来和其他包进行通信,隐藏内部实现意味这以后可以自由更改实现。...已经有很多的开源项目都是通过OSGi来发布他们的jar包,而且商业库也开始使用现成的包。 3、现实情况 OSGi是一个动态框架。他可以更新正在运行的模块和服务。...7、透明性 软件包和服务在OSGi环境中是最高级的。管理API不但提供了对软件包内部状态的访问而且也也提供了如何去和其他包做对接。...相比之下,OSGi软件包之间的预依赖可以准确的知道是哪个软件包提供的类,通过减少搜索是启动速度提高的一个重要因素。...很多开发者都想运行OSGi,但是他们的公司并不允许他们部署通常的JAR包。因此,这些开发者可以将某个OSGi框架包括在WAR文件中,并将软件包从文件系统或通过网络装载到应用服务器中来运行。

    1.9K10

    OSGI开发web应用

    在左侧的包浏览面板中可以看到OSGi工程的结构,“Plug-in Dependencies”下是OSGi插件运行需要的组件,src目录下是自动生成的源代码,simplewebosgi.Activator...与普通Java工程所不同的是向导会生成“META-INF”目录以及其下的文件 MANIFEST.MF文件,此文件会随插件的发布一起被打到jar包中,定义了Bundle的标识、版本、名称、运行环境等内容。...右边是可视化的配置管 理器,在这里可以定义插件,配置插件运行所依赖的组件及需要导入的包,运行时环境,编译构建配置等。...  在工程中引入javax.servlet、javax.servlet.http、org.osgi.service.http这几个包,如下图所示 ?...现在虽然HTML页面文件有了,包也配置好了,但是还不能通过HTTP访问相应的页面,如果现在测试运行访问http://localhost:8080服务,浏览器会提示找不到页面,我们需要将页面注册到OSGi

    2.1K40

    初识OSGI

    指维护OSGI规范的官方联盟 OSGi Alliance是一个由Sun Microsystems、IBM、爱立信等于1999年3月成立的开放的标准化组织,最初名为Connected Alliance...它本身提供的服务也是最全的,几乎涵盖了全部的OSGi 4.2的标准。除此之外还提供了一些非标准的功能,例如iPOJO。...框架本身非常紧凑,你只需要3个包加一个shell就可以运行了,无论是开发还是Debug都非常简便。除了Felix,还有两个项目是和OSGi相关的。...如果显示如上消息,恭喜你,可以点击Run启动OSGI console 啦!!! OSGI Console 启动 ? IDEA 版本 IDEA也带有OSGI 开发工具包,let's do it....import Bnd/Bndtools projects automatically 指的是将普通的jar包 打包 为OSGI 可用的jar.

    1.8K20
    领券