问题标签 [compile-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 投票
3 回答
3987 浏览

jpa - Aspectj 编译时基于编织的事务不起作用(来自 WebService 调用的 JPA)

我正在尝试使用带有编译时编织的 aspectj 来支持 Spring 的 @Transactional 和 @Configurable 等注释。我正在使用 org.springframework.orm.jpa.JpaTransactionManager 事务管理器,当我尝试在我的 GenericDAO 中调用 entityManager.persist(entity) 时,我在日志中看到的内容是这样的:

所以每个表的休眠序列得到更新,但我的实体没有插入到数据库中。

如果我添加 entityManager.flush() ,则会出现一个异常,指出“没有事务正在进行中”。

这里发生了什么?!

我的 GenericDAO 类如下所示:

我从使用WSSpringServlet导出的 Web 服务调用 saveOrUpdate 方法。

PS:我的 Maven 配置也是这样的:

编译时,我得到了一些看起来足够体面的东西(我的方面得到应用):

我相关的 Spring 配置是:

所以一切看起来都不错,但我找不到为什么这不起作用的答案......

0 投票
1 回答
694 浏览

spring - 使用 @Configurable 的 jar 依赖项中对象的 Spring 3 编译时编织问题(使用 Maven)

一直在谷歌上搜索并为此工作太久了。也看过各种stackoverflow帖子,但仍然对这里发生的事情感到困惑。

首先,我想要什么:

我有一个持久性 jar,在我的 Web 项目中用作依赖项。在这个持久化 jar 中,使用 web 项目中的 spring 配置可以很好地设置 daos。不过,我现在想做的是在一个基类(抽象)中,我希望能够在 String 上注入一个属性集,但扩展这个抽象类的类不是通过 Spring 直接控制的(例如,通过 new 实例化我的小鬼()。)

从我收集的所有内容中,我需要利用@Configurable

奇怪的是,代码全部编译(使用 Maven 使用方面插件),我认为必须进行一些编织,因为对扩展 @Configurable 抽象类的对象的调用似乎落入了“黑洞”——还没有错误通过旧的 skool System.out.print 语句甚至无法将任何内容打印到系统???真的很奇怪。

下面我认为是我如何设置的相关信息......(显然没有显示所有内容):

Web项目弹簧配置:

上述 Web 项目(包含 MyAbstractClass 及其后代)使用的 jar 没有任何 XML。各种文件扩展 MyAbstractClass 并通过 new 在应用程序中创建: MyImp imp = new MyImp(); imp.bar();

MyAbstractClass 相关信息:

我可以稍后使用@Autowiring 并使用@Value(这是我第一次尝试的方法),但现在我什至不确定编织是否正常工作。问题是否可能是持久性 jar 是首先通过 maven(使用编织)编译的 - 但是直到稍后基于 web 项目它才知道 xlsDir 的设置器是什么?这并不能解释为什么对 bar() 的调用只是消失了——所以发生了一些事情。

对于这两个项目,我已经设置了 maven 以根据我看到 Spring Roo 的 pom 所做的事情进行编译(很难在网上确定这个 pom 中真正需要的东西,以便用 spring 编织 maven 方面。)

这是相关的 pom 信息(在下面留下 spring roo 的评论 - 它们不是我的):

非常感谢任何帮助。我即将放弃,只需将我的属性文件加载到静态块中并完成它:)

0 投票
0 回答
585 浏览

maven-2 - Netbeans + maven + aspectj 编译时编织

我有一个 Maven 项目设置,用于使用 aspectj 进行编译时编织(主要用于 @Configurable 注释)。完全构建时一切正常,但 Netbeans 具有此功能,就像许多其他 IDE 一样,可以“即时”重新编译和热部署。当它这样做时,它不再编织方面,所以我得到了各种各样的 NPE。解决方案是什么?

0 投票
2 回答
8980 浏览

eclipse - 如何为 Eclipse 嵌入式 Tomcat 启用编译时 aspectj 编织

我在尝试使 eclipse 和 aspectj 用于动态 Web 项目时遇到问题。我正在寻找编译时编织,以便可以使用 Eclipse 可视化功能。

我已按照此处给出的步骤进行操作:

https://forums.oracle.com/forums/thread.jspa?messageID=8591748

将 Eclipse Indigo (3.7) 与最新的 Aspectj eclipse 插件 (2.1.3) 一起使用。

步骤如下:

[1] 创建基本的servlet

[2] 将servlet添加到部署描述符(web.xml)

[3] 创建方面

p>

但是,当我运行这个没有骰子时 - 方面只是不运行(servlet 写入响应,方面写入控制台)。我为常规的 java 项目做了类似的事情,效果很好。

我注意到有将 aop.xml 添加到 Web 应用程序的 META-INF 目录的指南,但这对我不起作用。

我们的目标是通过 eclipse 在非 Spring 框架(或 Maven)项目的开发中非侵入性地运行 aspectj - 这应该很容易......但我无法让它工作。

任何关于 Eclipse 中 Web 应用程序的编译时编织教程的建议/参考都会很有用。应用服务器是嵌入式 Tomcat 6(但如果需要,可以升级到 Tomcat 7)。

在运行时调整开发环境而不影响生产代码的能力会很棒——如果它可以工作的话。响应非常感谢。

0 投票
1 回答
1876 浏览

java - 如何解释我的堆栈跟踪?

我使用 IBM RAD 8 并部署到 websphere,然后我得到了这个堆栈跟踪:

这是什么意思?我应该采取哪些步骤来解决错误?

谢谢你的帮助

0 投票
1 回答
1978 浏览

eclipse - 为什么eclipse不能启用JDT Weaving?

我在 Eclipse Indigo 中创建了一个简单的 Spring Roo 项目,其中 jpa 实体是使用dbre命令生成的。当我想向某个类添加方法时,我无法使用通过 Spring Roo 生成的方面编织到实体中的方法。

当我在 Eclipse 中清理和构建项目时,进度视图显示这些方面已编织到类中。构建在 Maven 3.0.4 的命令行上运行良好。当使用这些方面的方法时,Maven 还将编译在 Eclipse 中标记为编译错误的代码。

我尝试通过首选项启用 JDT Weaving,并按照eclipse wiki 中的手动激活说明进行操作

我面临的问题与禁用的 JDT Weaving 功能有关吗?如果是,如何启用 JDT Weaving 或查找无法启用的原因?

感谢帮助

编辑:
我创建了一个新工作区并将 Spring Roo 项目作为 Maven 项目导入。我看到对话框出现,它想要转换旧的 STS 项目。当我确认时,似乎什么都没有发生。但现在至少我可以在 Spring Roo 生成的实体中看到 Advice Markers。但是我仍然无法使用课堂上编织的任何方法。

编辑:
运行 JUnit 测试也没有问题,即使有编译错误。我正在使用 Eclipse 靛蓝。

0 投票
2 回答
1141 浏览

spring - 在 Spring 中从 Load Time Weaver 更改为 Compile Time Weaver 的问题

我正在尝试使用我的 Spring 2.5 应用程序从加载时编织更改为编译时编织。

为此,我执行了以下操作:

  1. 在我的 ant 构建文件中,我添加了

    /li>

并将对 javac 编译器的引用替换为以下内容

在 applicationContext.xml 然后我替换了

我的应用上下文文件 BTW 中的其他配置设置包括

在 context.xml 文件中,我从 loader 标记中删除了以下内容

当我运行构建脚本时,它编译没有错误。

但是,我确实收到了此警告。

在顶部,在底部有这个警告:

大多数日志记录如下所示:

我从 tomcat 库中删除了 tomcatspringweaver jar。我正在使用aspectj1.7

当我启动应用程序时,我收到一条错误消息,表明当将 dao 类注入服务类时,在 org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:104) 处存在 NPE

Dao 类扩展了一个 AbstractJpaDao 类,如下所示:

自最初设置所有这些以来已经有很长时间了,我不记得所有配置是如何工作的。我也不太了解类加载器或 AspectJ。但是有些事情没有正确发生,也许 Entitymanager 由于某种原因没有被注入。

问题。

  1. 这可能是什么原因造成的?
  2. 真的<context:spring-configured/>需要吗?
  3. 引用的包<context:component-scan base-package="com.domain.somepackage"/>不包括有问题的 Dao 类。当我添加另一个带有 dao 包的组件扫描标签时,没有什么不同。这是必要的吗?
0 投票
1 回答
128 浏览

java - 如何区分生成的方法(AspectJ)

我目前正在使用 aspectJ @Around 来检查我的代码。我正在使用 aspectJ 编译器来编织方面。但是,在运行时,我也在使用反射分析类的结构type.getDeclaredMethods()。但是我需要区分哪些方法最初存在,哪些方法是由 aspectJ 编译器添加的。是否可以?还是有一些解决方法?

提前致谢。

0 投票
1 回答
612 浏览

aop - 如何确保 Spring roo 生成的方面是由依赖项目编织的?

我有一个 Spring Roo多模块项目。我注意到在另一个项目中包含包含我的域模型的 jar/模块后,这些方面没有被编织,让我得到没有任何可用 getter/setter 的域类

如何确保 Spring roo 生成的方面是由依赖项目编织的?

编辑:为了能够在另一个项目中使用 Roo 的方面,需要在依赖项目中包含 aspectJ 插件。请注意,这种方式不需要编译时加载。

0 投票
1 回答
2011 浏览

java - 部分编译时间用 maven 编织第三方 jar

我已经使用 maven 插件 aspectj-maven-plugin 配置了编织第三方 jar。

对缺少的 java 类的引用存在问题。Quartz jar 与 JMS 有一些集成,但我的应用程序不使用 JMS,因此永远不会加载这些石英文件。

我找到了一个带有proceedOnError = true 的拐杖,但我认为由于错误注入方面注释类停止工作。

shade-maven-plugin 不适合这里,因为它只能由包阶段触发,而 aspectj 在编译阶段启动。