我有两个tomee实例聚集.
每个人都有一个注释方法
@Schedule(dayOfWeek = "*")
public void runMeDaily() {...}
Run Code Online (Sandbox Code Playgroud)
我想每天只运行一次这种方法.一天不两次(每个实例一个)
我可以使用此处描述的标志仅在一个WebLogic群集节点上运行@Scheduled任务?或者只选择一些节点,但我想知道是否有更优雅的方式来做到这一点.
这个问题与集群环境中的EJB3.1 @Schedule有些相关,但我没有使用JBOSS.(而且没有回答)
在我的服务器日志中,我偶尔可以看到例外:
Aug 11, 2015 10:13:34 AM org.apache.activemq.broker.TransportConnection serviceTransportException
WARNING: Transport Connection to: tcp://127.0.0.1:55472 failed: java.io.EOFException
Run Code Online (Sandbox Code Playgroud)
那些似乎不是实际事件或消息发送到队列.它们只是随机发生的.
这是Tomcat/Tomee上的ActiveMQ
配置ActiveMQ的代码是:
我的ActiveMQ配置非常简单:
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<!-- see http://tomee.apache.org/containers-and-resources.html -->
<!-- activate next line to be able to deploy applications in apps -->
<!-- <Deployments dir="apps" /> -->
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig = broker:(tcp://localhost:61616)
ServerUrl = tcp://localhost:61616
</Resource>
<Resource id="MyJmsConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
</tomee>
Run Code Online (Sandbox Code Playgroud)
要定义队列我有一个简单的代码:
@Resource(name = "myQueue")
private Queue barQueue;
@Resource
private ConnectionFactory connectionFactory;
/**
* Push Message to Queue …Run Code Online (Sandbox Code Playgroud) 我正在使用tomee服务器来运行我的javaEE应用程序.我写了一个注入对象的过滤器.但是,该对象似乎没有实例化:
以下是我的代码:
Filter.java
@Priority(value = 2)
@Provider
@Singleton
public class Filter implements ContainerRequestFilter {
@Inject
private Faculty faculty;
public void filter(ContainerRequestContext requestContext) {
System.out.println("faculty name is :"+faculty.getFacultyName());
}
}
Run Code Online (Sandbox Code Playgroud)
Faculty.java
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
public class Faculty {
private List<String> facultyMembers;
private String facultyName;
@PostConstruct
public void initialize() {
this.facultyMembers = new ArrayList<String>();
facultyMembers.add("Ian Schultz");
facultyMembers.add("Diane Reyes");
facultyName = "Computer Science";
}
public List<String> getFacultyMembers() {
return facultyMembers;
}
public String getFacultyName() {
return facultyName;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在获得NPE.以下是堆栈跟踪: …
我下载了最新的TomEE Plume 1.7.4版本,并尝试从IntelliJ IDEA 14内部启动它,看起来我是一个正常的服务器设置,我收到超时错误,并重复打印以下错误消息:
2016年4月11日上午9:20:31 org.apache.openejb.server.ejbd.EjbDaemon服务WARNUNG:"null OEJP/4.7"FAIL"安全错误 - [Ljava.net.URI;未列入白名单,因为可以取消预防,之前已被阻止加载它." - 调试StackTrace
我可以从普通的shell启动服务器,所以似乎与IDE有关.有谁知道问题是什么?
我正在转换Web应用程序以使用TomEE而不是Jboss 5.1.0并看到以下异常:
ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[mlui]- Servlet.service() for servlet [mlui] in context with path [] threw exception [The absolute uri: http://www.springframework.org/spring-social/social/tags cannot be resolved in either web.xml or the jar files deployed with this application] with root cause
org.apache.jasper.JasperException: The absolute uri: http://www.springframework.org/spring-social/social/tags cannot be resolved in either web.xml or the jar files deployed with this application
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:445)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117)
at org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:152)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475)
at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1427)
at org.apache.jasper.compiler.Parser.parse(Parser.java:138)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
at org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
at …Run Code Online (Sandbox Code Playgroud) 我想使用安排重复的后台任务ManagedScheduledExecutorService.我通过一个获得我的Runnables/Callables Instance,所以我的任务中有注入功能.
我的应用程序运行TomEE 7.0.0-SNAPSHOT webprofile.
当这些任务访问数据库时,他们需要一个事务.但是,Runnable/ Callableno事务内部是活动的.
ManagedScheduledExecutorService的文档说明了这一点
如果需要事务,请使用javax.transaction.UserTransaction实例.通过使用Resource注释请求注入UserTransaction对象,可以使用UserTransaction实例(...).
但是,注入了
@Resource
private UserTransaction userTransaction;
Run Code Online (Sandbox Code Playgroud)
是null在调用任务时.
我采用的另一种方法是将无状态EJB注入到我的任务中,希望这会为我创建一个事务.
这导致启动时出现以下异常:
SEVERE: CDI Beans module deployment failed
java.lang.IllegalStateException: no interface to proxy for ejb StatelessEjb, is this is a MDB maybe you shouldn't use a scope?
at org.apache.openejb.cdi.CdiEjbBean.createEjb(CdiEjbBean.java:252)
at org.apache.openejb.cdi.CdiPlugin.getSessionBeanProxy(CdiPlugin.java:224)
at org.apache.webbeans.container.BeanManagerImpl.getEjbOrJmsProxyReference(BeanManagerImpl.java:951)
at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:777)
at org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:651)
at org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:111)
at org.apache.webbeans.inject.InjectableConstructor.createParameters(InjectableConstructor.java:109)
at org.apache.webbeans.inject.InjectableConstructor.doInjection(InjectableConstructor.java:72)
at …Run Code Online (Sandbox Code Playgroud) 我使用TomEE 7.0.1和Jackson 2作为JAX-RS JSON提供程序(配置openejb-jar.xml).将json发布到jax-rs服务非常有效,并使用jackson注释.
但是使用JAX-RS客户端(或cxf webclient)总是使用Johnzon,即使我将Jackson提供给Webclient.create方法也是如此.经过一些调试后,我确信TomEE会以某种方式将Johnzon添加到客户端工厂,并且不能使用其他的json消息体解析器.
这是TomEE CXF集成的错误还是我错过了什么?
当内存不足[OOME]错误时,如何配置Tomcat自动重新启动。
我认为
-XX:OnOutOfMemoryError="/yourscripts/tomcat-restart"
Run Code Online (Sandbox Code Playgroud)
但是不确定这里的“您的脚本”代表什么目录?
当我尝试部署我的项目时,我收到此错误:
Sep 01, 2014 11:34:27 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor D:\Sun\Apache Tomee+\conf\Catalina\localhost\Workshop.xml
Sep 01, 2014 11:34:27 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
INFO: ------------------------- localhost -> /Workshop
Sep 01, 2014 11:34:28 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(F:\Web Design\wwwroot\Ali Farvardin\Farvardin Workshop\Workshop\build\web\WEB-INF\lib\javaee-api-7.0.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
Sep 01, 2014 11:34:28 PM org.apache.tomee.catalina.TomEEClassLoaderEnricher validateJarFile
WARNING: jar 'F:\Web Design\wwwroot\Ali Farvardin\Farvardin Workshop\Workshop\build\web\WEB-INF\lib\javax.persistence_2.1.0.v201304241213.jar' contains offending class: javax.persistence.Entity. It will be ignored.
Sep 01, 2014 11:34:28 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: …Run Code Online (Sandbox Code Playgroud) 我在使用带有TomEE服务器的Jersey运行简单的RESTful Web服务时遇到了一些问题.(这是我正在遵循的教程:http://www.vogella.com/tutorials/REST/article.html虽然我使用Maven作为我的依赖项,而TomEE JAX-RS作为我的服务器).当我运行服务器时,我收到以下错误:
org.apache.openejb.OpenEJBException: Unable to load servlet class: org.glassfish.jersey.servlet.ServletContainer: org.glassfish.jersey.servlet.ServletContainer
at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:2113)
at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1843)
at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:360)
at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:401)
at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:962)
at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1214)
at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1087)
at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5378)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
servlet类派生自我的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>RestTest</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.vogella.jersey.first</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个Web项目(中的所有JAR WEB-INF/lib)迁移到Maven Web项目(中的所有JAR pom.xml)。
该项目使用以下库:
它在TomEE上运行。
TomEE启动时会出现以下错误:
NoClassDefFoundError:javax / faces / component / UIViewAction
但是,TomEE在类路径上提供了JSF2库。
这是我的pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lb</groupId>
<artifactId>XXX</artifactId>
<version>0.0.1</version>
<packaging>war</packaging>
<name>XXX</name>
<description>Application XXX</description>
<url>http://XXX.fr</url>
<organization>
<name>XXX</name>
<url>http://XXX.fr</url>
</organization>
<inceptionYear>2016</inceptionYear>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<javase.version>1.7</javase.version>
<javaee.version>7.0</javaee.version>
</properties>
<developers>
<developer>
<id>XXX</id>
<name>YYY</name>
<email>ZZZ@gmail.com</email>
</developer>
</developers>
<build>
<directory>${basedir}/target/${project.artifactId}-${project.version}</directory>
<finalName>XXX</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${javase.version}</source>
<target>${javase.version}</target>
<encoding>UTF-8</encoding> …Run Code Online (Sandbox Code Playgroud) 在我的Web应用程序中,我在Apache Tomcat(TomEE)/7.0.37服务器上使用OpenJPA.
我的实体User.class:
@Entity
@Table(name = "USER")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Basic(optional = false)
@Column(name = "id_user")
private Integer idUser;
@Size(max = 8)
@Column(name = "login")
private String login;
@Size(max = 128)
@Column(name = "password")
private String password;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "user")
private Lecturer lecturer;
@OneToOne(cascade = CascadeType.ALL, mappedBy = "user")
private Student student;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private List<UserHasRoles> userHasRolesList;
//constructors, getters, setters
} …Run Code Online (Sandbox Code Playgroud)