我正在使用JAMon,我想使用它jamon.war来监控我的应用程序.但是,我的应用程序和jamon.war应用程序有不同的类加载器,因此他们没有看到彼此的静态变量(据我所知,数据存储在哪里).当我MonitorFactory.getReport()在我的应用程序中调用时,我收到了正确的数据.
如何使这个工作?
在我的应用程序中,我需要定期运行后台任务(我可以使用Quartz轻松地完成该任务-即安排要在特定时间定期运行的给定作业)。
但我想多控制一点。特别是我需要:
在我看来,以上几点可以通过Spring Batch Admin来实现,但是我在这方面还没有很多经验。另外,我已经看到很多关于Spring Batch不是调度工具的文章,所以我开始怀疑这里应该使用哪种合适的工具。
所以我的问题是:以上内容可以通过Spring Batch Admin实现吗?也许Quartz就足够了,但需要配置以完成上述操作?还是我都需要?或者是其他东西?
非常感谢:)彼得
我正在考虑使用Drools Fusion来实现以下示例性规则:
所有这些规则都可以使用Drools Fusion轻松表达.然而,在创建原型并查看文档后,似乎该产品更适合短期,瞬态事件(股票市场,实时决策).
问题是:是否需要将所有事件存储在内存中?(可能有数百万的旧购买).此外,Drools Fusion可以存储事件,以便它们在服务器重启后能够存活吗 (理想情况下在数据库中).
我知道Drools Fusion事件只是Drools Expert中的事实,所以也许这个问题可以扩展到:Drools Expert能否坚持并懒惰加载事实?
我们的应用程序使用 Spring/Hibernate 进行数据库访问。我们使用多个hibernate会话工厂(hibernate3.LocalSessionFactoryBean),因为数据位于多个单独的数据库中。每个会话工厂都使用 c3p0 ( ) 配置了一个池数据源c3p0.ComboPooledDataSource。
事实上,这些数据库都驻留在同一个数据库服务器上。我们的问题是,我们最终会得到许多数据库连接池,所有这些都连接到同一台服务器。有没有一种方法可以共享一个池数据源来访问同一服务器上的多个数据库?是否可以jdbcUrl在会话工厂级别而不是数据源级别进行配置?
或者这在实践中不是一个真正的问题?配置多个数据库连接池是否完全可以?
我在春季webapp(春季3.1)中收到此错误,我不知道为什么.
org.springframework.web.util.NestedServletException:处理程序处理失败; 嵌套异常是java.lang.NoClassDefFoundError:mypackage/TestCache $ AjcClosure1
($AjcClosure1很奇怪)
如果我@Cacheable在下面的类中注释注释,则错误消失了.
public class TestCache {
@Cacheable(value ="myCache")
public List<String> getDummyList(){
Logger l = Logger.getLogger(this.getClass());
l.error("calling getDummyList");
ArrayList<String> foo = new ArrayList<String>();
foo.add("foo");
foo.add("bar");
return foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器类(简化):
@Controller
@RequestMapping("/mypage")
public class MyController {
@RequestMapping
public String index(ModelMap model, Locale locale) {
TestCache tc = new TestCache();
...
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序上下文(仅缓存部分):
<cache:annotation-driven mode="aspectj"/>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cache-manager-ref="ehcache"/>
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="classpath:ehcache.xml"/>
Run Code Online (Sandbox Code Playgroud)
我尝试了代理和aspectj模式(在代理模式下减少错误但缓存无效)
这个Web应用程序最初是使用roo构建的,并使用spring mvc和webflow.所以applicationContext.xml或webmvc-config.xml中有相当多的xml(我无法理解一些bean在做什么).我使用m2e-wtp在eclipse中运行wepapps,而pom.xml正在使用插件aspectj-maven-plugin(但不知道它的作用)
看起来问题与aspectj有关,但我从未使用aspectJ.如果有人spring/java/aspectj guru可以解释我是什么造成了这个错误以及我如何使我的缓存工作它会很棒!(我只能找到教程但没有使用可缓存注释的示例项目).
我正在使用spring 3(注释)和jsf,我知道如何创建一个会话以及如何使其失效......
所以当我登录并使用最后的注销按钮时,外翻效果很好.但问题是,如果我没有点击退出按钮,会话仍然存在.如果我现在使用其他用户登录,则旧会话数据仍然存在 - 因为旧会话未被无效.
那么如果旧会话没有失效,我如何强制系统创建新会话?
我在基于Spring 3.0的应用程序中使用Quartz Scheduler.我成功地能够创建新的调度程序,它们工作正常.
我见过这样的参考.
但是..我无法在我的石英作业文件中检索servletContext.任何人都可以帮助我如何在executeInternal()方法中检索servletContext引用?
Gunjan Shah,thx.
我试图实现REST WCF以探索PUT和POST动词之间的区别.我已使用该服务在某个位置上传了一个文件.
服务实现如下:
[OperationContract]
[WebInvoke(UriTemplate = "/UploadFile", Method = "POST")]
void UploadFile(Stream fileContents);
public void UploadFile(Stream fileContents)
{
byte[] buffer = new byte[32768];
MemoryStream ms = new MemoryStream();
int bytesRead, totalBytesRead = 0;
do
{
bytesRead = fileContents.Read(buffer, 0, buffer.Length);
totalBytesRead += bytesRead;
ms.Write(buffer, 0, bytesRead);
} while (bytesRead > 0);
using (FileStream fs = File.OpenWrite(@"C:\temp\test.txt"))
{
ms.WriteTo(fs);
}
ms.Close();
Run Code Online (Sandbox Code Playgroud)
}
客户端代码如下:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:1922 /EMPRESTService.svc/UploadFile");
request.Method = "POST";
request.ContentType = "text/plain";
byte[] fileToSend = File.ReadAllBytes(@"C:\TEMP\log.txt"); // txtFileName contains …Run Code Online (Sandbox Code Playgroud) 对于我当前的项目,我需要使用来自许多目的地(从数百到 20 或 30k)的消息,所有目的地都是主题。当前(对于初始负载测试)所有消息都在同一服务器的本地线程池中创建。
我当前的 spring 配置在代理网络(用于集群)和 DefaultMessageListenerContainers (DMLCs) 网络中使用嵌入式 activemq,带有一个公共 TaskExecutor。虽然目的地数量非常多,但每个目的地的吞吐量相对较低。
我唯一的要求是尽快消耗所有消息。
我的配置:
<bean id="connectionfactory" class="org.springframework.jms.connection.CachingConnectionFactory" destroy-method="destroy">
<property name="targetConnectionFactory">
<ref bean="amqConnectionFactory" />
</property>
</bean>
<bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localhost:61616?async=false&jms.dispatchAsync=false" />
<property name="userName" value="admin" />
<property name="password" value="admin" />
</bean>
<bean id="listenerThreadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="70" />
<property name="maxPoolSize" value="70" />
<property name="daemon" value="true" />
<property name="keepAliveSeconds" value="60" />
</bean>
<!-- Message Listener Container Template for Topics -->
<bean id="topiccontainertemplate" class="org.springframework.jms.listener.DefaultMessageListenerContainer" scope="prototype"
destroy-method="destroy">
<property name="autoStartup" value="false" />
<property name="connectionFactory" …Run Code Online (Sandbox Code Playgroud) 我开发了一个Web爬虫,它使用Start URL作为种子参数进行爬网.我希望允许用户根据作业安排此任务.
目前我正在使用Spring 3.1.2和Hibernate.我需要给用户一个接收cronJob参数的前端,并根据我想要运行爬虫.是否可以使用弹簧来做到这一点.
我读了一下,Quartz但SO或其他网站上的文章一点也不清楚,或者它们不完整,以便完全理解如何在春天实现调度程序.
我知道有三个组成部分的基础知识
我希望有人可以指导我正确的方向.
java ×7
spring ×5
spring-mvc ×2
aspectj ×1
c# ×1
c3p0 ×1
datasource ×1
drools ×1
ehcache ×1
hibernate ×1
jamon ×1
java-ee ×1
jms ×1
scheduling ×1
servlets ×1
session ×1
spring-jms ×1
tomcat ×1
wcf ×1
wcf-rest ×1