我的应用程序和Tomcat 7存在很大问题.我的应用程序需要将会话cookie设置为"/"路径而不是"/ context"路径.在tomcat 6中,它是向Connector添加另一个属性的问题(emptySessionPath ="true"),Tomcat 7无法识别此事.我知道Servlet 3.0规范允许在每个上下文的基础上配置它,但我无法使它与Tomcat 7一起使用.它仍然添加了上下文路径而不是"/".
我将非常感谢收到如何做到这一点.
我正在尝试使用Tomcat 7.0.22中的管理器应用程序登录Mac OS X 10.7.这是我得到的错误:http://f.cl.ly/items/421q1K3f1i0X1H1M181v/so.tiff
401 Unauthorized
You are not authorized to view this page. If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.
For example, to add the manager-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above.
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
Run Code Online (Sandbox Code Playgroud)
我已经在我的tomcat-users.xml中添加了这个,仍然没有使用相同的用户名/密码.
<tomcat-users> …Run Code Online (Sandbox Code Playgroud) 我正在使用Tomcat 7 for Spring和JPA Application,数据库MySQL.一切都工作正常.但有时realm.LockOutRealm验证问题将出现.我还在我的应用程序中使用了连接池,如:
persistence.xml中:
<properties>
<property name="hibernate.connection.username" value="---"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.password" value="----------"/>
<property name="hibernate.connection.url" value="jdbc:mysql://----------?autoReconnect=true"/>
<!--Connection Pooling c3p0 configuration-->
<!--Minimum number of JDBC connections in the pool. Hibernate default: 1-->
<property name="hibernate.c3p0.min_size" value="5"/>
<!--Maximum number of JDBC connections in the pool. Hibernate default: 100-->
<property name="hibernate.c3p0.max_size" value="20"/>
<!--When an idle connection is removed from the pool (in second). Hibernate default: 0, never expire.-->
<property name="hibernate.c3p0.timeout" value="300"/>
<!--Number of prepared statements will be cached. Increase performance. Hibernate …Run Code Online (Sandbox Code Playgroud) Tomcat 7不支持Tomcat 6及更早版本可用的RequestDumperValve.
它在Tomcat 7中的推荐替代品是什么?
我有一个部署到Tomcat服务器的WAR文件,其中一个类将在启动时调用,然后init()方法将安排一个计时器每5小时触发一次以执行某些任务.
我的init()代码如下所示:
public void init()
{
TimerTask parserTimerTask = new TimerTask() {
@Override
public void run() {
XmlParser.parsePage();
}
};
Timer parserTimer = new Timer();
parserTimer.scheduleAtFixedRate(parserTimerTask, 0, PERIOD);
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序运行没有问题,但当我使用/etc/init.d/tomcat7停止关闭Tomcat时,我检查日志(catalina.out)它有一个这样的条目:
严重:Web应用程序[/ MyApplication]似乎已经启动了一个名为[Timer-0]的线程,但未能阻止它.这很可能造成内存泄漏.
我明白这是由我安排计时器引起的,但我的问题是:
setDeamon为true,所以定时器不应该阻止Tomcat关闭,而不是继续运行?谢谢!
UPDATE
我根据一些搜索和DaveHowes的答案将我的代码更改为以下内容.
Timer parserTimer;
TimerTask parserTimerTask;
public void init()
{
parserTimerTask = new TimerTask() {
@Override
public void run() {
XmlParser.parsePage();
}
};
parserTimer = new Timer();
parserTimer.scheduleAtFixedRate(parserTimerTask, 0, PERIOD);
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
Logger logger …Run Code Online (Sandbox Code Playgroud) 我正在使用Tomcat 7.0.29前面的Apache 2.2.22 modproxy.配置Ajp作为httpd.conf中的协议和server.xml中的AjpNioProtocol.服务器启动后,日志将填充以下消息:
严重:收到签名
20599 com.apache.coyote.ajp.AjpMessage processHeader的消息无效
没有请求发送到Web或tomcat服务器,它仍然会抛出该错误.tomcat和apache中的访问日志显示没有请求进入.导致无效消息错误的原因是什么?
这是配置:
httpd.conf文件
ProxyPass /wl ajp:// ip : port /wl
ProxyPassReverse /wl ajp:// ip : port /wl
Run Code Online (Sandbox Code Playgroud)server.xml中
<Connector port="port"
protocol="org.apache.coyote.ajp.AjpNioProtocol"
connectionTimeout="20000"
acceptorThreadCount="2"
maxThreads="1600"
redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:372)
at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:232)
at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:188)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:113)
at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49)
at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(LookupEnvironment.java:1335)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromVariantTypeSignature(LookupEnvironment.java:1391)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeArgumentsFromSignature(LookupEnvironment.java:1172)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(LookupEnvironment.java:1340)
at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethod(BinaryTypeBinding.java:550)
at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethods(BinaryTypeBinding.java:630)
at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.cachePartsFrom(BinaryTypeBinding.java:365)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(LookupEnvironment.java:688)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(LookupEnvironment.java:667)
at org.eclipse.jdt.internal.compiler.Compiler.accept(Compiler.java:296)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:118)
at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49)
at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122)
at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:168)
at org.eclipse.jdt.internal.compiler.lookup.Scope.getPackage(Scope.java:2379)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveLeafType(ParameterizedQualifiedTypeReference.java:138)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveType(ParameterizedQualifiedTypeReference.java:132)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.resolveType(ParameterizedQualifiedTypeReference.java:351)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypeFor(SourceTypeBinding.java:1374)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.fields(SourceTypeBinding.java:699)
at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.faultInTypesForFieldsAndMethods(SourceTypeBinding.java:677)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:469)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:756)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:468)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:459)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at …Run Code Online (Sandbox Code Playgroud) 我有部署在Tomcat 7.0.70中的WebApplication.我模拟了以下情况:
结果
线程转储
在下面的屏幕上,您可以看到,在我单击"redeploy"之后,除了线程"http-apr-8081-exec-10"之外,所有线程(与此Web应用程序关联)都被终止.当我设置Tomcat的属性"renewThreadsWhenStoppingContext == true"时,你可以看到一段时间后这个线程("http-apr-8081-exec-10")被杀死并且新线程(http-apr-8081-exec-11) )而不是它.所以我没想到在创建堆转储3之后会有旧的WCL,因为没有任何旧的线程或对象.
堆转储1
在以下两个屏幕上,您可以看到当应用程序运行时,只有一个WCL(其参数"started"= true).线程"http-apr-8081-exec-10"有contextClassLoader = URLClassLoader(因为它在Tomcat的池中).我只是谈论这个线程,因为你将能够看到这个线程将处理我未来的HTTP请求.
发送HTTP请求
现在我发送HTTP请求,并在我的代码中获取有关当前线程的信息.您可以看到我的请求由线程"http-apr-8081-exec-10"处理
??? 23, 2016 9:28:16 AM c.c.c.f.s.r.ReportGenerationServiceImpl INFO: request has been handled in
thread = http-apr-8081-exec-10, its contextClassLoader = WebappClassLoader
context: /hdi
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader: java.net.URLClassLoader@4162ca06
Run Code Online (Sandbox Code Playgroud)
然后我单击"重新部署我的Web应用程序",我在控制台中收到以下消息.
??? 23, 2016 9:28:27 AM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
SEVERE: The web application [/hdi] appears to have started a thread named [http-apr-8081-exec-10] but has failed to stop it. This is very likely …Run Code Online (Sandbox Code Playgroud) 嗨我通过Windows安装程序安装了Apache Tomcat 7.刚刚重新启动我的系统,我得到了错误
应用程序系统错误访问被拒绝.无法打开服务'Tomcat7'
每次我在命令提示符下运行mvn clean install tomcat7:deploy时,都会失败.当我打开生成的日志文件时,它表示常量池中存在无效的字节标记.它指定的文件是java/lang/CharSequence.class.
这是日志:
---- AspectJ Properties ---
AspectJ Compiler 1.6.9.RC3 built on Wednesday Jun 30, 2010 at 15:46:30 GMT
---- Dump Properties ---
Dump file: ajcore.20141116.131622.157.txt
Dump reason: org.aspectj.apache.bcel.classfile.ClassFormatException
Dump on exception: true
Dump at exit condition: abort
---- Exception Information ---
org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'java/lang /CharSequence.class': Invalid byte tag in constant pool: 15
at org.aspectj.apache.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:192)
at org.aspectj.apache.bcel.classfile.ClassParser.parse(ClassParser.java:131)
at org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:412)
at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:373)
at org.aspectj.weaver.World.resolveToReferenceType(World.java:452)
at org.aspectj.weaver.World.resolve(World.java:298)
at org.aspectj.weaver.World.resolve(World.java:211)
at org.aspectj.weaver.bcel.BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(BcelGenericSignatureToTypeXConverter.java:95)
at org.aspectj.weaver.bcel.BcelGenericSignatureToTypeXConverter.classTypeSignature2TypeX(BcelGenericSignatureToTypeXConverter.java:41)
at org.aspectj.weaver.bcel.BcelObjectType.ensureGenericSignatureUnpacked(BcelObjectType.java:807)
at org.aspectj.weaver.bcel.BcelObjectType.getDeclaredInterfaces(BcelObjectType.java:255)
at org.aspectj.weaver.ReferenceType.getDeclaredInterfaces(ReferenceType.java:625)
at …Run Code Online (Sandbox Code Playgroud)