问题标签 [load-time-weaving]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
100 浏览

java - 当我添加 ejb 模块时,Spring 事务停止工作

我有一个耳朵,它包含一个 ejb 和一个 war 模块,以及其他本地 jar 依赖项,例如 dao 和服务。

我已将项目放在 github https://github.com/SunPj/spring-load-time-weaving

我使用弹簧加载时间编织。我的 dao 应用程序上下文包括以下几行

我的缓存上下文有<cache:annotation-driven mode="aspectj"/>

我的网络模块有一个控制器

服务看起来像

当 ejb 没有服务依赖时,一切正常。一旦我将服务依赖项添加到 ejb 模块(某些 ejb 的 pom),事务就会停止工作。

在 github 上的最后 2 次提交(提交 973f48a9e0db11edc3675fd09b6930f05b98afc9 和提交 e7d280cb93b2303bfcfbd5cd0b55d24b002be8fc)显示了工作和没有工作的情况。

0 投票
1 回答
962 浏览

java - Apache Felix OSGi 框架的 WeavingHook.weave() 方法未被调用

我使用fabric8-karaf-1.1.0.CR5,其中包括:

.../org.apache.felix.framework-4.0.0/doc/changelog.txt包含:

我添加到.../etc/startup.properties

我的捆绑包的激活器:

我的编织钩:

.../system/igb/igb.osgi.weaving/1.0.0/igb.osgi.weaving-1.0.0.jar/META-INF/MANIFEST.MF

我的包从 Fabric8 开始:

但是我的 Weaver 对象没有“Weaving ...”输出。

我的捆绑包处于活动状态:

我的 Weaver 服务得到认可:

但似乎没有使用它:

.../data/log/karaf.log包含的行igb

OSGi 服务平台版本 4 版本 4.3 核心规范,56.3 The Weaving Service,第 351 页内容如下:

框架选择 Weaving Hook 服务并为每个必须加载的类调用其 weave 方法。

我将此解释为无事可做。我哪里错了?

PS:Activator的代码适应反映接受的答案。

0 投票
1 回答
2019 浏览

aspectj - AspectJ 和 Java8 - 操作数堆栈上的错误类型

查看这个 Eclipse 错误,Java 验证程序(自 1.6 起)似乎与 ApsectJ 存在问题。

该错误表示 AspectJ 1.8.1 将解决该问题。但是将它与 Java8u11 一起使用,我仍然会收到验证错误。

我在 STS 3.6.0 (Eclipse 4.4) 下运行 JUnit4。我相信此配置是所有软件包中最新的可用配置。

用请求的示例完全替换了文本的其余部分。这似乎仅限于@Around 建议。 @Before 工作正常。

JUnit:

Vmarg: -javaagent:C:....m2\repository\org\aspectj\aspectjweaver\1.8.1\aspectjweaver-1.8.1.jar

被测类(我遇到了一些问题,因为proceed 显然声明它抛出Throwable,这是有道理的,但是这个简单的测试没有抛出任何东西。所以我添加了一个人造异常使其编译:

方面:

最后再一次出现错误,当 JUnit 尝试实例化 AspectTarget(testFirstMethod 方法的第一行)时实际抛出该错误。

0 投票
0 回答
1168 浏览

spring - WebSphere Load-Time weaving 不增强 jpa 实体

我用我的最新配置重写了我的整个问题。我已经多次更改和测试,但仍然没有找到合适的解决方案。

我在我的项目中为 jpa 类增强启用加载时间编织时遇到了困难。

我正在使用Websphere 8.5,而后者又使用openjpa 2.2.2。我有一个Ear文件,其中包含一个和多个包含实体自定义命名War文件的依赖 jar 。JPApersistence.xml

像这样:

我在 control.jar 中名为 control-context.xml 的主要上下文文件如下:

我正在使用 spring 提供的合并持久性单元管理器来组合位于META-INF/<module-name>/<module-name>-persistence.xml每个 jar 文件夹下的自定义持久性单元 xml 中的持久性单元声明。例如META-INF/core/core-persistence.xml

这是一个这样的文件:

我的实体都有@Entity 和正确的@Id 标签,什么都没有,它们以前一直作为实体工作,我没有修改它们,所以我确定我的实体是有效的。

现在的问题:

我在使用 oneEMF 的 mod1 jar 中设置了 spring rest jpa 资源库:

当我在应用程序部署并启动后点击 url 时,我收到以下消息:

为什么我的实体在加载时没有增强?

我已经浪费了很多时间来尝试配置这个所谓的简单设置,但是我不知道为什么没有对我进行增强。任何帮助甚至同情都将不胜感激。

更新:

在我的战争类文件夹的 META-INF 目录中放置一个虚拟的 persistence.xml 已成功触发实体扫描,但根据我的阅读,如果我使用带有 spring 的 packagesToScan,我不需要persistence.xml。此包扫描是否涉及将由加载时间编织器增强的实体?

感谢您的时间。

0 投票
1 回答
1202 浏览

java - 用作 websphere 8 应用程序的 -javaagent 的 openjpa jar 位于何处?

还是我必须自己提供?我想在此处的文档之后提供加载时 JPA 实体增强:

我想找到路径/到/。我在正确的轨道上吗?这就是我的实体没有增强的原因吗?

更新:

我想我可能遇到了该文件:C:/<websphere-install>/plugins/com.ibm.ws.jpa.jar但是当我尝试在设置中启动 websphere 时-javaagent:"C:\Program Files (x86)\IBM\WebSphere\AppServer\plugins\com.ibm.ws.jpa.jar",服务器无法启动:

由于某种原因,它无法识别空格。我读过

这些值[jvm args]必须进行编码,这要求文件路径中的任何空格都应替换为 %20。例如,C:\Program Files 将变为 C:\Program%20Files。如果 JVM 参数值输入不正确,WebSphere Application Server 将不会启动。

但是,应用此更改只会给我一条路径中带有 %20s 的错误消息:

0 投票
1 回答
254 浏览

java - JPA - 编织的性能影响

我找不到任何基准或大规模测试来显示静态编织与动态编织的性能增益。有人有这方面的经验吗?

0 投票
3 回答
5989 浏览

spring - Spring Boot AOP 加载时间编织

不知道出了什么问题,但 AOP 似乎在我的 spring boot (v1.1.6) 设置中不起作用。

在方面类

在需要建议的服务类中

我也有这样的 META-INF/aop.xml

当我使用 -javaagent:path/to/spring-instrument-4.1.0.RELEASE.jar 运行应用程序时

我在控制台上收到此消息

但是,建议没有任何反应。它不会着火。

难道我做错了什么?

0 投票
2 回答
10635 浏览

spring - Spring Boot - 无法使用 aspectj 进行加载时间编织工作

谁能告诉我为什么使用弹簧靴时方面不会触发?我正在尝试使用 aspectj 设置加载时间编织,以便我可以建议私有方法。

这是准系统项目的链接 - https://github.com/satb/spring_aop_test_project.git

使用“-javaagent:path/to/spring-instrument-4.1.0.RELEASE.jar”(或计算机上其他版本的 lib)运行“App”类并运行 curl 命令

MyAspect 类有一个在调用 MyService 的私有方法时应该执行的通知。但在这种情况下,什么也没有发生。

但是,当应用程序启动时,我会看到如下消息:

我尝试按照这里的建议让它工作,但这没有帮助 -将@Autowired 与 AspectJ 和 Springboot 一起使用

0 投票
1 回答
339 浏览

maven - Roo 和 Failsafe 集成测试:BeanConfigurerSupport 问题

案例:自动生成集成测试的 Roo 应用程序。

需要:使用 PGSQL 进行部署,使用 HSQLDB 进行集成测试。

选择:在 maven-failsafe-plugin 配置中的 argLine 中的 spring-agent/spring-instrument & aspectjweaver,以免耦合到某个 tomcat 安装(应该具有所需的 jars 和 Context 配置)

结果

BeanConfigurerSupport - BeanFactory 尚未在 BeanConfigurerSupport 上设置:确保此配置器在 Spring 容器中运行。无法配置 [com.model.UserIntegrationTest] 类型的 bean。继续不注射。

我注意到它使用类加载器:WebappClassLoader

我还尝试了更改 tomcat 配置并在其库中添加所需 jar 的方法,但我无法使故障安全插件与远程 tomcat 协作。

任何的想法?

以下是与该问题相关的代码片段。拥有 SSCCE 的最简单方法是获取 spring roo 示例并尝试执行 *IntegrationTest roo 作为集成测试生成,并针对用于测试的 hsqldb 和用于部署的其他一些 db 进行故障保护。

pom.xml 的一部分:

applicationContext.xml 的一部分,其中定义了 IT 的配置文件:

将 aspectj-maven-plugin 更新到 1.7 后,我得到的不是我最初发布的消息

0 投票
1 回答
4235 浏览

java - 如何在 Java 配置类中设置 Spring weaver 选项?

我正在使用带有提供的默认值的 Spring AOP DefaultContextLoadTimeWeaver。我希望能够编织持久实体,并且我知道我必须设置一个编织器选项(来自控制台的警告):

我的搜索只找到了 .xml 文件中的配置示例,但我真的希望它出现在我的 Java 配置类中,我的所有配置都在其中。有没有办法做到这一点?