问题标签 [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 回答
2013 浏览

spring - aspectj-weaver 和 spring-weaver 之间的 Load-Time-Weaving 差异

我在使用 spring 和使用 AspectJ 的 Load-Time-Weaving 时遇到了一些奇怪的问题。在我的一个 Apsect 中,我想对 org.springframework.flex.security3.SpringSecurityLoginCommand 类的“doAuthentication”方法的调用做出反应。因此我创建了一个方法:

如果我使用 aspectj-weaver 代理,则此方面被正确编织,但如果我使用 spring-weaver 则被忽略。不幸的是,如果我想要正确的方面弹簧集成,我必须使用弹簧编织器。我发现编织方面的唯一方法是围绕目标类的每个方法编织它,并以编程方式过滤方面调用:

使用上面的代码,我设法正确地编织了所有东西,但我对此并不满意,因为这对我来说似乎是一个大黑客。

谁能解释一下为什么使用 Spring-Weaver 我不能像使用 aspectj-weaver 一样编织?

克里斯

0 投票
5 回答
26756 浏览

spring - Spring 的 LoadTimeWeaver 代理未启动

我正在尝试使用 Spring 和 AspectJ 实现加载时间编织。据我所知,我已经正确配置了所有内容,但是当我尝试运行集成测试时,我不断收到错误消息:

我的应用程序上下文包含:

我的 pom 包含:

似乎它无法加载弹簧代理,但我似乎无法找出原因。在此先感谢您的帮助。

0 投票
2 回答
1980 浏览

java - Web应用程序中的JavaConfig问题(Vaadin + Spring)

更新

我发现了一个可疑的日志条目:

/更新

我正在开发一个 Vaadin + Spring 应用程序,我希望使用 JavaConfig。

根据一些教程,我分别构建了它们,但是当我合并它们时,我得到了以下内容(参见第一个代码片段 App.java - logger.info(">>mainWindow is null");)

我尝试了几种配置变体,例如在 applicationContext 等中。

所以我的问题是:我怎样才能找出真正的问题?

提前感谢您的时间和精力。

乔巴

应用程序.java

AppConfig.java

web.xml 基于此!教程链接!

0 投票
0 回答
612 浏览

spring - 使用 Spring、Eclipselink 和 Weblogic 10.x 服务器进行加载时编织

有人可以在 Weblogic 服务器上使用 EclipseLink 提供真正有效的、经过验证的 Spring 加载时编织配置吗?
似乎文档(http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-ltw-spring)根本不正确。我成功地使它在 Glasfish 3.x(不是 2.x)中工作。然而,Weblogic 没有运气。

感谢您的回答。

0 投票
1 回答
6869 浏览

spring - 在 Spring LTW 环境中使用 Maven 运行单元测试

我正在使用 Spring LoadTimeWeaving 功能在 ddd 架构中开发应用程序。问题是我可以使用 Eclipse 运行我的 Junit 测试,但不能通过 Maven。我已经尝试了各种网站上提供的所有选项,但它根本不起作用。我得到以下异常:

原因:org.springframework.beans.factory.BeanCreationException:创建名为“loadTimeWeaver”的bean时出错:bean初始化失败;嵌套异常是 java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] 不提供“addTransformer(ClassFileTransformer)”方法。指定自定义 LoadTimeWeaver 或使用 Spring 代理启动 Java 虚拟机:-javaagent:org.springframework.instrument.jar

我已将仪器 jar 作为 argLine 的一部分添加到 surefire 插件中。以下是我的代码工件。请让我知道我哪里出错了,或者是否有其他解决方案。

我在 Mac OSX 上使用 Eclipse Indigo 进行开发,Maven 3.0

pom.xml(仅用于重要细节的缩写)

springContext.xml (它具有启用 LTW 功能的以下标记)

0 投票
3 回答
21504 浏览

java - Spring:使用@Resource 注入具体类是否需要CGLIB

我已经使用 spring-instrument.jar 配置了带有 AspectJ LTW 的 Spring 3.0.6,并且:

从依赖项中删除 CGLIB 时,即使在创建 MyBean 之后(并且它的 @PostConstruct 已运行),我也会收到以下异常:

这是否意味着即使存在加载时间编织器,我也应该拥有 CGLIB?

0 投票
1 回答
2604 浏览

java - AspectJ 加载时编织 + Spring 3.0.5.RELEASE + Tomcat 7 不工作

我试图弄清楚为什么加载时编织对我的 Web 应用程序还不起作用。对于我的普通应用程序(不是 webapp)它正在工作。

测试项目可以在 github (github/peterbollen/helloLtw) 上找到:helloLtwAspect

当我启动应用程序时,日志显示加载时编织器正在工作(查看日志)。但是当我触发 EchoServlet 时,EchoAspect 并没有融入(查看日志)。

有人有想法吗?随意查看代码并尝试自己(我测试了自述文件 :))感谢您的任何建议 ;-)

更新 1

当使用 javaagent aspectjweaver 而不是 spring-instrument 时,加载时编织正在工作。

为什么?搜索“aspectj-weaver 和 spring-weaver 之间的加载时间编织差异”。我无法粘贴链接(没有足够的学分:-))。

更新 2

也更新了 github 代码。

0 投票
1 回答
519 浏览

spring - spring web app监控newrelic冲突loadtimeweaver与实体管理器

Spring Web 应用程序需要使用 newrelic 进行监控。spring-agent 正在作为 loadTimeWeaver 加载,spring-agent 用于 jpa 加载 enhane 和自定义配置,当 spring-agent 和 newrelic 配置加载时java_opts,当应用程序部署时它会抛出加载 jpa 的异常...

org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.context.support.ClassPathXmlApplicationContext]:构造函数抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [spring-config.xml] 中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.IllegalAccessError:类 sun.reflect.GeneratedConstructorAccessor9 无法访问其超类 sun.reflect.ConstructorAccessorImpl 原因:org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名称为“entityManagerFactory”的bean时出错[spring-config.xml]:init方法调用失败;嵌套异常是 java.lang.IllegalAccessError: class sun。

如何配置加载 spring 代理和 newrelic(监视 Web 应用程序性能管理)而不会相互冲突?

0 投票
2 回答
2527 浏览

java - 使用 AspectJ LTW 时的 Spring 缓存问题

我正在使用 Spring 3.0 RC1 中的缓存抽象机制:我设置了字节码(基于 AspectJ)weawing,以便可以将缓存机制应用于从类本身内部调用的方法。值得一提的是,我首先使用的是基于代理的方法:一切正常(因为方法是从另一个对象调用的。)

一旦我切换到 AspectJ(我通过激活 LTW,将正确的 jars 添加到它们的位置 - 一切正常,没有抛出异常),没有缓存发生

有什么建议吗?谢谢你。

==== 稍后编辑 ========

我将日志设置为 org.springframework 的 DEBUG。

如果使用代理模式,我可以清楚地看到消息添加缓存方法 'getLargeAssetContent'.... 其中 getLargeAssetContent 是我的“可缓存”方法...(请参见下文)

如果使用 aspectj 模式,我看不到此消息....每个请求都转到 DAO 层...在缓存工作的情况下,请求在服务层停止。

我做错了什么?我需要 aop.xml 吗?我没有使用 AOP....,所以我还没有 aop.xml。

谢谢您的帮助。

*> *2011-12-12 16:38:55,998 调试 [org.springframework.cache.annotation.AnnotationCacheOperationSource]

(http-127.0.0.1-8080-6) 添加具有属性的可缓存方法“getLargeAssetContent”:[CacheOperation[public com.mycompany.myprj.model.AssetContent com.mycompany.myprj.dao.jcr.AssetDAOImpl.getLargeAssetContent(java.lang .String) 抛出 com.mycompany.myprj.dao.MyPrjPersistenceException] caches=[assets] | 条件='' | key='#nodeId'] 2011-12-12 16:38:56,013 INFO [com.mycompany.myprj.dao.jcr.AssetDAOImpl] (http-127.0.0.1-8080-6) 获取资产的内容 (getLargeAssetContent)来自 id=575d8dc0-01be-41e4-85ce-a654fab97fe8 的节点 2011-12-12 16:38:56,092 INFO [com.mycompany.myprj.dao.jcr.AssetDAOImpl] (http-127.0.0.1-8080-6) 返回来自 id=575d8dc0-01be-41e4-85ce-a654fab97fe8 节点的资产内容**

*

//内容现在被缓存 2011-12-12 16:38:57,654 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] ​​(http-127.0.0.1-8080-6) Returning cached instance of singleton bean ' assetsController' 2011-12-12 16:38:57,654 调试 [org.springframework.web.servlet.DispatcherServlet] (http-127.0.0.1-8080-6) [/myprj/asset/get/575d8dc0-的最后修改值01be-41e4-85ce-a654fab97fe8] 是:-1 2011-12-12 16:38:57,654 INFO [com.mycompany.myprj.services.AssetService] (http-127.0.0.1-8080-6) 使用 id 获取资产: 57

*

0 投票
1 回答
1934 浏览

spring - 使用 Aspectj 在 Websphere 8 上加载时间编织 3rd 方类

我们使用 AspectJ(1.6.12) 来编织第三方库类(SpringBeanELResolver)。我们使用 启用 LTW <context:load-time-weaver/>,我们的方面使用 AspectJ 注释配置。在 Aspectj 的调试输出中看到的完整类列表在码头上一切正常。如 Spring 中所述,我们不使用 -javaagent,因为它在 Websphere 平台上不需要。

在 Websphere 8 上,我们看到 Spring 正确初始化的日志WebSphereLoadTimeWeaver,并且 Aspectj 被正确初始化。但是我们在 aspectj 的调试输出上只看到了一部分类。SpringBeanELResolver也不包含在编织中。结果,我们的班级没有被编织。

我们可以编织调试输出中列出的类,例如我们的类..

我们将 Classloading 策略配置为 PARENT_LAST。

以下是一些日志和配置:

Websphere SystemErr (包括SpringBeanELResolver在内的大多数第 3 方类在这里都看不到)

Websphere SystemOut

aop.xml

我认为 CompoundClassLoader 可能在加载 WEB-INF/lib 中的所有 3rd 方库时遇到问题,或者,它介于 Aspectj 和 CompoundClassLoader 之间......