- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望你们中的一个可爱的人能够帮助我解决这个问题,因为我已经花费了许多徒劳的时间试图让一切都变得美好!
我已经将问题追溯到类加载,并且能够看到当 Quartz 尝试从 jobStore (jobStoreCMT) 反序列化 jobDetail 时,使用的类加载器不包含我的任何应用程序类,并且只包含在EARs lib 文件夹。
所以......我显然正在使用应用程序服务器,在这种情况下尝试针对 Glassfish 3.1.1/3.1.2
尝试对抗 Quartz 1.8.6/2.1.5
使用 Spring 3.1.0.RELEASE
Spring / quartz 配置:
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="overwriteExistingJobs" value="true" />
<property name="triggers">
<list>
<ref bean="notificationEmailsSimpleTrigger" />
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.instanceName">QuartzScheduler</prop>
<prop key="org.quartz.scheduler.instanceId">AUTO</prop>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">25</prop>
<prop key="org.quartz.threadPool.threadPriority">5</prop>
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreCMT</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
<!-- <prop key="org.quartz.jobStore.isClustered">true</prop> -->
<!-- <prop key="org.quartz.jobStore.clusterCheckinInterval">20000</prop> -->
<prop key="org.quartz.scheduler.classLoadHelper.class">org.quartz.simpl.CascadingClassLoadHelper</prop>
<prop key="org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer">true</prop>
<prop key="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread">true</prop>
<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
</props>
</property>
</bean>
<bean id="notificationEmailsSimpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="notificationJobDetail" />
<property name="repeatInterval" value="60000" />
</bean>
<bean id="notificationJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.mcboom.social.notifications.NotificationQuartzJobBean" />
</bean>
<prop key="org.quartz.scheduler.classLoadHelper.class">org.quartz.simpl.CascadingClassLoadHelper</prop>
<prop key="org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer">true</prop>
<prop key="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread">true</prop>
INFO: ERROR - ErrorLogger.schedulerError(schedulerFactoryBean_QuartzSchedulerThread)(2358) | An error occured while scanning for the next trigger to fire.
org.quartz.JobPersistenceException: Couldn't acquire next trigger: Couldn't retrieve trigger: com.mcboom.social.notifications.NotificationQuartzJobBean [See nested exception: org.quartz.JobPersistenceException: Couldn't retrieve trigger: com.mcboom.social.notifications.NotificationQuartzJobBean [See nested exception: java.lang.ClassNotFoundException: com.mcboom.social.notifications.NotificationQuartzJobBean]]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2814)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$36.execute(JobStoreSupport.java:2757)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3788)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2753)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:263)
Caused by: org.quartz.JobPersistenceException: Couldn't retrieve trigger: com.mcboom.social.notifications.NotificationQuartzJobBean [See nested exception: java.lang.ClassNotFoundException: com.mcboom.social.notifications.NotificationQuartzJobBean]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1596)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStoreSupport.java:1572)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2792)
... 4 more
Class.forName(name, false, latestUserDefinedLoader())
最佳答案
如果有人对我提出的解决方案感兴趣,虽然不理想的是扩展默认值 StdJDBCDelegate
,在我的 MySQL 案例中,我可以匿名覆盖 ObjectInputStream.resolveClass()
很像下面。
/**
* <p>
* This method should be overridden by any delegate subclasses that need
* special handling for BLOBs. The default implementation uses standard JDBC
* <code>java.sql.Blob</code> operations.
* </p>
*
* <p>
* This implementation overcomes the incorrect classloader being used in
* ObjectInputStream, overriding it with the current threads classloader.
* </p>
*
* @param rs
* the result set, already queued to the correct row
* @param colName
* the column name for the BLOB
* @return the deserialized Object from the ResultSet BLOB
* @throws ClassNotFoundException
* if a class found during deserialization cannot be found
* @throws IOException
* if deserialization causes an error
*/
@Override
protected Object getObjectFromBlob(ResultSet rs, String colName) throws ClassNotFoundException, IOException, SQLException {
Object obj = null;
Blob blobLocator = rs.getBlob(colName);
if (blobLocator != null && blobLocator.length() != 0) {
InputStream binaryInput = blobLocator.getBinaryStream();
if (null != binaryInput) {
if (binaryInput instanceof ByteArrayInputStream && ((ByteArrayInputStream) binaryInput).available() == 0) {
// do nothing
} else {
ObjectInputStream in = new ObjectInputStream(binaryInput) {
@Override
protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
String name = desc.getName();
try {
return Class.forName(name, false, Thread.currentThread().getContextClassLoader());
} catch (ClassNotFoundException ex) {
return super.resolveClass(desc);
}
}
};
try {
obj = in.readObject();
} finally {
in.close();
}
}
}
}
return obj;
}
关于macos - quartz JobStore : JobPersistenceException: Couldn't retrieve trigger: ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704509/
这里的 IT 网络/编程学生试图完成一项作业,但我遇到了障碍。我们的任务是读取文本文件,将单词放入 ArrayList 中,并对内容执行字符串操作。我能够将单词拉入 ArrayList、按升序对内容进
编辑:我收到以下错误代码: Error adding accessory The operation couldn’t be completed. (HMErrorDomain error 2.) 和
您好,我正在尝试测试套接字激活机制,但无法连接到服务器。 curl --unix-socket/run/gunicorn.sock本地主机 curl: (7) Couldn't connect to
所以我安装了sandbox (运行 centOS)来自 hortonworks在 virtualBox带网络配置>>> bridged network我编辑了bashrc导出http_proxy和 h
我目前正在开发一个android应用程序,提交一个post请求并处理相应的响应。 我能够将发布请求发送到相应的 URL,但是当我尝试检索响应时,我得到了一半的 HTML 内容,然后是“*无法从 STD
我在将 ServiceLoader 集成到我的 Android 应用程序以集成插件系统时遇到问题。 public class StrategieClassLoader extends URLClass
我有一个类似于以下的自定义数据类型: data Token = Number Int | Otherthings 我希望能够以一种方式使用“数字”,以另一种方式使用其他东西。所以
当我尝试从 Visual Studio Code 运行一个简单的 React Native 应用程序时,我收到以下错误消息。 Scanning folders for symlinks in C:\P
我最近从Java搬到了Kotlin。将整个项目转换为Kotlin,将pom.xml转换为build.gradle。我正在使用Kotlin,Gradle,Cucumber Sernity,Appium构
我在执行docker-compose命令时遇到Powershell中的错误: 尽管从Docker Quickstart Terminal运行相同的命令可以正常工作: 最佳答案 确保首先在Powersh
当我运行docker build时,我得到了: Sending build context to Docker daemon 10.24kB WARN[11935] Couldn't run aup
我在运行 SDL 程序时遇到此错误。它编译得很好,但是窗口打开了一小会儿然后就关闭了。 这是我的代码: //Using SDL and standard IO #include #include
我正在编写一个基于 Google map 的 Android 应用程序。应用程序本身运行良好,没有任何问题。我可以看到 map ,缩放到我的当前位置等等。根据 AndroidManifest.xml,
我在实际设备上仅在生产和开发容器上都遇到了这个错误。模拟器能够很好地获取记录。这发生在通过 XCode 运行的开发构建、TestFlight 构建和 AppStore 上的实时生产构建上。 所有设备
我正在创建一个模板化的快速排序函数,它应该允许我使用迭代器对一个定制的双向链表类进行快速排序。我遇到了错误 In file included from main.cpp:21.0: quicksort
我有一个模板类和一个具有模板返回类型的函数: template class Wrapper { public: Wrapper(const T& _data) : data(_data) {
将 Jersey 从 1.15 版升级到 1.17 版后,它开始记录以下消息: Apr 2, 2013 5:13:06 PM com.sun.jersey.server.wadl.generators
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个 android 应用程序在我将设备更新到 android 4.4 (kitkat) 之前一直运行没有问题。 现在我开始收到这个错误,并且程序的某些部分在日志 cat_ 中被破坏了_ Andr
我通过 git clone 成功安装了 Directus CMS。在数据库中创建了 15 个表。在/config 文件夹中,我的 projectkey.php 文件也已创建。安装后我想使用我的凭据登录
我是一名优秀的程序员,十分优秀!