Jakarta ee JavaEE+;Glassfish-缓冲区下溢异常
我有一个非常简单的JavaEE应用程序,其中有些bean使用JMS进行通信。当我尝试部署和调试我的应用程序时,我得到了以下结果Jakarta ee JavaEE+;Glassfish-缓冲区下溢异常,jakarta-ee,netbeans,jms,glassfish-4.1,bufferunderflowexception,Jakarta Ee,Netbeans,Jms,Glassfish 4.1,Bufferunderflowexception,我有一个非常简单的JavaEE应用程序,其中有些bean使用JMS进行通信。当我尝试部署和调试我的应用程序时,我得到了以下结果 Informazioni: visiting unvisited references Grave: Unknow type constant pool 18 at position38 Grave: Unknow type constant pool 0 at position39 Grave: Unknow type constant pool 0
Informazioni: visiting unvisited references
Grave: Unknow type constant pool 18 at position38
Grave: Unknow type constant pool 0 at position39
Grave: Unknow type constant pool 0 at position40
Grave: Unknow type constant pool 105 at position43
Grave: Unknow type constant pool 116 at position44
Grave: Unknow type constant pool 101 at position45
Grave: Unknow type constant pool 32 at position46
Grave: Unknow type constant pool 108 at position47
Grave: Unknow type constant pool -30 at position48
Grave: Unknow type constant pool -128 at position49
Grave: Unknow type constant pool -103 at position50
Grave: Unknow type constant pool 105 at position51
Grave: Unknow type constant pool 110 at position52
Grave: Unknow type constant pool 110 at position53
Grave: Unknow type constant pool 111 at position54
Grave: Unknow type constant pool 118 at position55
Grave: Unknow type constant pool 97 at position56
Grave: Unknow type constant pool 116 at position57
Grave: Unknow type constant pool 105 at position58
Grave: Unknow type constant pool 118 at position59
Grave: Unknow type constant pool 97 at position60
Grave: Unknow type constant pool 32 at position61
Grave: Unknow type constant pool 116 at position62
Grave: Unknow type constant pool 101 at position63
Grave: Unknow type constant pool 99 at position64
Grave: Unknow type constant pool 110 at position65
Grave: Unknow type constant pool 111 at position66
Grave: Unknow type constant pool 108 at position67
Grave: Unknow type constant pool 111 at position68
Grave: Unknow type constant pool 103 at position69
Grave: Unknow type constant pool 105 at position70
Grave: Unknow type constant pool 97 at position71
Grave: Unknow type constant pool 32 at position72
Grave: Unknow type constant pool 68 at position73
Grave: Unknow type constant pool 111 at position74
Grave: Unknow type constant pool 119 at position75
Grave: Unknow type constant pool 110 at position76
Grave: Unknow type constant pool 108 at position77
Grave: Unknow type constant pool 111 at position78
Grave: Unknow type constant pool 97 at position79
Grave: Unknow type constant pool 100 at position80
Grave: Unknow type constant pool 32 at position81
Grave: Unknow type constant pool 66 at position82
Grave: Unknow type constant pool 111 at position83
Grave: Unknow type constant pool 111 at position84
Grave: Unknow type constant pool 115 at position85
Grave: Unknow type constant pool 116 at position86
Grave: Unknow type constant pool 101 at position87
Grave: Unknow type constant pool 114 at position88
Grave: Unknow type constant pool 44 at position89
Grave: Unknow type constant pool 32 at position90
Grave: Unknow type constant pool 112 at position91
Grave: Unknow type constant pool 111 at position92
Grave: Unknow type constant pool 116 at position93
Grave: Unknow type constant pool 114 at position94
Grave: Unknow type constant pool 97 at position95
Grave: Unknow type constant pool 105 at position96
Grave: Unknow type constant pool 32 at position97
Grave: Unknow type constant pool 97 at position98
Grave: Unknow type constant pool 117 at position99
Grave: Unknow type constant pool 109 at position100
Grave: Unknow type constant pool 101 at position101
Grave: Unknow type constant pool 110 at position102
Grave: Unknow type constant pool 116 at position103
Grave: Unknow type constant pool 97 at position104
Grave: Unknow type constant pool 114 at position105
Grave: Unknow type constant pool 101 at position106
Grave: Unknow type constant pool 32 at position107
Grave: Unknow type constant pool 115 at position108
Grave: Unknow type constant pool 105 at position109
Grave: Unknow type constant pool 103 at position110
Grave: Unknow type constant pool 110 at position111
Grave: Unknow type constant pool 105 at position112
Grave: Unknow type constant pool 102 at position113
Grave: Unknow type constant pool 105 at position114
Grave: Unknow type constant pool 99 at position115
Grave: Unknow type constant pool 97 at position116
Grave: Unknow type constant pool 116 at position117
Grave: Unknow type constant pool 105 at position118
Grave: Unknow type constant pool 118 at position119
Grave: Unknow type constant pool 97 at position120
Grave: Unknow type constant pool 109 at position121
Grave: Unknow type constant pool 101 at position122
Grave: Unknow type constant pool 110 at position123
Grave: Unknow type constant pool 116 at position124
Grave: Unknow type constant pool 101 at position125
Grave: Unknow type constant pool 32 at position126
Grave: Unknow type constant pool 108 at position127
Grave: Unknow type constant pool 97 at position128
Grave: Unknow type constant pool 32 at position129
Grave: Unknow type constant pool 118 at position130
Grave: Unknow type constant pool 101 at position131
Grave: Unknow type constant pool 108 at position132
Grave: Unknow type constant pool 111 at position133
Grave: Unknow type constant pool 99 at position134
Grave: Unknow type constant pool 105 at position135
Grave: Unknow type constant pool 116 at position136
Grave: Unknow type constant pool -61 at position137
Grave: Unknow type constant pool -96 at position138
Grave: Unknow type constant pool 32 at position139
Grave: Unknow type constant pool 100 at position140
Grave: Unknow type constant pool 105 at position141
Grave: Unknow type constant pool 32 at position142
Grave: Unknow type constant pool 100 at position143
Grave: Unknow type constant pool 111 at position144
Grave: Unknow type constant pool 119 at position145
Grave: Unknow type constant pool 110 at position146
Grave: Unknow type constant pool 108 at position147
Grave: Unknow type constant pool 111 at position148
Grave: Unknow type constant pool 97 at position149
Grave: Unknow type constant pool 100 at position150
Grave: Unknow type constant pool 32 at position151
Grave: Unknow type constant pool 100 at position152
Grave: Unknow type constant pool 101 at position153
Grave: Unknow type constant pool 105 at position154
Grave: Unknow type constant pool 32 at position155
Grave: Unknow type constant pool 100 at position156
Grave: Unknow type constant pool 97 at position157
Grave: Unknow type constant pool 116 at position158
Grave: Unknow type constant pool 105 at position159
Grave: Unknow type constant pool 32 at position160
Grave: Unknow type constant pool 99 at position161
Grave: Unknow type constant pool 111 at position162
Grave: Unknow type constant pool 109 at position163
Grave: Unknow type constant pool 98 at position164
Grave: Unknow type constant pool 105 at position165
Grave: Unknow type constant pool 110 at position166
Grave: Unknow type constant pool 97 at position167
Grave: Unknow type constant pool 110 at position168
Grave: Unknow type constant pool 100 at position169
Grave: Unknow type constant pool 111 at position170
Grave: Unknow type constant pool 32 at position171
Grave: Unknow type constant pool 87 at position172
Grave: Unknow type constant pool 105 at position173
Grave: Unknow type constant pool 45 at position174
Grave: Unknow type constant pool 70 at position175
Grave: Unknow type constant pool 105 at position176
Grave: Unknow type constant pool 32 at position177
Grave: Unknow type constant pool 101 at position178
Grave: Unknow type constant pool 32 at position179
Grave: Unknow type constant pool 52 at position180
Grave: Unknow type constant pool 71 at position181
Grave: Unknow type constant pool 32 at position182
Grave: Unknow type constant pool 76 at position183
Grave: Unknow type constant pool 84 at position184
Grave: Unknow type constant pool 69 at position185
Grave: Unknow type constant pool 46 at position186
Grave: Unknow type constant pool 103 at position188
Grave: Unknow type constant pool 110 at position189
Grave: Unknow type constant pool 105 at position190
Grave: Unknow type constant pool 32 at position191
Grave: Unknow type constant pool 115 at position192
Grave: Unknow type constant pool 105 at position193
Grave: Unknow type constant pool 116 at position194
Grave: Unknow type constant pool 117 at position195
Grave: Unknow type constant pool 97 at position196
Grave: Unknow type constant pool 122 at position197
Grave: Unknow type constant pool 105 at position198
Grave: Unknow type constant pool 111 at position199
Grave: Unknow type constant pool 110 at position200
Grave: Unknow type constant pool 101 at position201
Grave: Unknow type constant pool 32 at position202
Grave: Unknow type constant pool 105 at position203
Grave: Unknow type constant pool 108 at position204
Grave: Unknow type constant pool 32 at position205
Grave: Unknow type constant pool 116 at position206
Grave: Unknow type constant pool 117 at position207
Grave: Unknow type constant pool 111 at position208
Grave: Unknow type constant pool 32 at position209
Grave: Unknow type constant pool 71 at position210
Grave: Unknow type constant pool 97 at position211
Grave: Unknow type constant pool 108 at position212
Grave: Unknow type constant pool 97 at position213
Grave: Unknow type constant pool 120 at position214
Grave: Unknow type constant pool 121 at position215
Grave: Unknow type constant pool 32 at position216
Grave: Unknow type constant pool 83 at position217
Grave: Unknow type constant pool 53 at position218
Grave: Unknow type constant pool 32 at position219
Grave: Unknow type constant pool 115 at position220
Grave: Unknow type constant pool 97 at position221
Grave: Unknow type constant pool 114 at position222
Grave: Unknow type constant pool -61 at position223
Grave: Unknow type constant pool -96 at position224
Grave: Unknow type constant pool 32 at position225
Grave: Unknow type constant pool 112 at position226
Grave: Unknow type constant pool 114 at position227
Grave: Unknow type constant pool 111 at position228
Grave: Unknow type constant pool 116 at position229
Grave: Unknow type constant pool 101 at position230
Grave: Unknow type constant pool 116 at position231
Grave: Unknow type constant pool 116 at position232
Grave: Unknow type constant pool 111 at position233
Grave: Unknow type constant pool 32 at position234
Grave: Unknow type constant pool 100 at position235
Grave: Unknow type constant pool 97 at position236
Grave: Unknow type constant pool 32 at position237
Grave: Unknow type constant pool 97 at position238
Grave: Unknow type constant pool 99 at position239
Grave: Unknow type constant pool 113 at position240
Grave: Unknow type constant pool 117 at position241
Grave: Unknow type constant pool 97 at position242
Grave: Unknow type constant pool 44 at position243
Grave: Unknow type constant pool 32 at position244
Grave: Unknow type constant pool 112 at position245
Grave: Unknow type constant pool 105 at position246
Grave: Unknow type constant pool 111 at position247
Grave: Unknow type constant pool 103 at position248
Grave: Unknow type constant pool 103 at position249
Grave: Unknow type constant pool 105 at position250
Grave: Unknow type constant pool 97 at position251
Grave: Unknow type constant pool 44 at position252
Grave: Unknow type constant pool 32 at position253
Grave: Unknow type constant pool 112 at position254
Grave: Unknow type constant pool 111 at position255
Grave: Unknow type constant pool 108 at position256
Grave: Unknow type constant pool 118 at position257
Grave: Unknow type constant pool 101 at position258
Grave: Unknow type constant pool 114 at position259
Grave: Unknow type constant pool 101 at position260
Grave: Unknow type constant pool 32 at position261
Grave: Unknow type constant pool 101 at position262
Grave: Unknow type constant pool 32 at position263
Grave: Unknow type constant pool 115 at position264
Grave: Unknow type constant pool 97 at position265
Grave: Unknow type constant pool 98 at position266
Grave: Unknow type constant pool 98 at position267
Grave: Unknow type constant pool 105 at position268
Grave: Unknow type constant pool 97 at position269
Grave: Unknow type constant pool 44 at position270
Grave: Unknow type constant pool 32 at position271
Grave: Unknow type constant pool 103 at position272
Grave: Unknow type constant pool 114 at position273
Grave: Unknow type constant pool 97 at position274
Grave: Unknow type constant pool 122 at position275
Grave: Unknow type constant pool 105 at position276
Grave: Unknow type constant pool 101 at position277
Grave: Unknow type constant pool 32 at position278
Grave: Unknow type constant pool 97 at position279
Grave: Unknow type constant pool 108 at position280
Grave: Unknow type constant pool 108 at position281
Grave: Unknow type constant pool 97 at position282
Grave: Unknow type constant pool 32 at position283
Grave: Unknow type constant pool 99 at position284
Grave: Unknow type constant pool 101 at position285
Grave: Unknow type constant pool 114 at position286
Grave: Unknow type constant pool 116 at position287
Grave: Unknow type constant pool 105 at position288
Grave: Unknow type constant pool 102 at position289
Grave: Unknow type constant pool 105 at position290
Grave: Unknow type constant pool 99 at position291
Grave: Unknow type constant pool 97 at position292
Grave: Unknow type constant pool 122 at position293
Grave: Unknow type constant pool 105 at position294
Grave: Unknow type constant pool 111 at position295
Grave: Unknow type constant pool 110 at position296
Grave: Unknow type constant pool 101 at position297
Grave: Unknow type constant pool 32 at position298
Grave: Unknow type constant pool 73 at position299
Grave: Unknow type constant pool 80 at position300
Grave: Unknow type constant pool 54 at position301
Grave: Unknow type constant pool 55 at position302
Grave: Unknow type constant pool 46 at position303
Grave: Unknow type constant pool 15 at position330
Grave: Unknow type constant pool 118 at position333
Grave: Unknow type constant pool 16 at position334
Grave: Exception while deploying the app [AsteRibasso]
Grave: Exception during lifecycle processing
java.nio.BufferUnderflowException
at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:151)
at com.sun.enterprise.deployment.annotation.introspection.ConstantPoolInfo.containsAnnotation(ConstantPoolInfo.java:86)
at com.sun.enterprise.deployment.annotation.introspection.ClassFile.containsAnnotation(ClassFile.java:133)
at com.sun.enterprise.deployment.annotation.introspection.ClassFile.containsAnnotation(ClassFile.java:87)
at com.sun.enterprise.deployment.util.AnnotationDetector.containsAnnotation(AnnotationDetector.java:157)
at com.sun.enterprise.deployment.util.AnnotationDetector.containsAnnotation(AnnotationDetector.java:146)
at com.sun.enterprise.deployment.util.AnnotationDetector.hasAnnotationInArchive(AnnotationDetector.java:137)
at com.sun.enterprise.deployment.archivist.ApplicationArchivist.getApplicationFromIntrospection(ApplicationArchivist.java:393)
at com.sun.enterprise.deployment.archivist.ApplicationArchivist.createApplication(ApplicationArchivist.java:264)
at org.glassfish.javaee.full.deployment.EarHandler.getApplicationHolder(EarHandler.java:578)
at org.glassfish.javaee.full.deployment.EarHandler.initCompositeMetaData(EarHandler.java:555)
at com.sun.enterprise.v3.server.ApplicationLifecycle.getSniffers(ApplicationLifecycle.java:655)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:358)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)
Grave: Exception while deploying the app [AsteRibasso]
在互联网上找不到任何关于GlassFish 4.1(build 13)和jre1.8.031的问题,我在NetBeans 8.0.2中使用了这两个版本。有人能帮我吗?我遇到了同样的问题 我将问题跟踪到jar
glassfish/modules/dol.jar
()。这个jar中的类com.sun.enterprise.deployment.annotation.introspection.ConstantPoolInfo
负责在部署时测试相关注释上的类
问题:
该类通过按字节读取和解释.class
文件的一个特殊部分:常量池()来实现这一点。该池包含“各种类型的数字、字符串、标识符名称、对类和方法的引用以及类型描述符等值”()。这包括注释的类名。问题是,Java 7增加了常量池的可能内容,并添加了一些额外的条目类型以支持JVM中的脚本语言。那些条目(方法句柄、方法类型和InvokeDynamic(ID15、16和18))尚不受
ConstantPoolInfo
的支持。当读取和检查其中一个常量池条目的类型标识符字节时,该类只需记录警告“Unknow[sic]type constant pool x位于位置i”,并继续处理下一个字节,忽略跳过属于当前类型数据结构的字节(它们无论如何都不相关)。
这会导致完全混乱,因为下一个本应跳过的字节被解释为类型标识符。在某些情况下,错误解释的字节会导致执行“UTF 8/ASCII”输入情况的代码,并将下两个字节解释为常量池中字符串的长度,然后希望读取该字符串。这就是
BufferUnderflowException
的来源:包含常量池数据的输入源可能无法按请求保存字节
地点和时间:
使用Java 7代码时没有问题,因为通常的开发人员/编译器不会生成需要额外常量池条目类型的字节码。Java8改变了这一点:Lambdas和methdod引用使用了它 出于某种原因,我没有检查,war模块中的lambdas不会出现问题,而只会出现在ejb模块中。可能,类文件的内省没有在那里完成——至少没有基于ConstantPoolInfo 解决方案: 我打开了一个错误报告: 除了在ejb模块中避免使用lambdas/方法引用(或编译为
invokedynamic
bytecode的任何内容)之外,我没有其他解决方案
<>重构代码,直到它只产生警告,没有例外可能有帮助,但我不认为它是一个干净的解决方案。它可能会因任何代码更改或jdk更新而再次中断。除此之外,对班级的检查仍然没有完成,可能会导致其他问题
[TL;DR]从ejb项目中删除lambda/方法引用。
[/TL;DR]为了修改flo,我们在较早的GF版本中遇到了相同的问题,在部署WAR时也会执行此代码。 无论如何,多亏了他出色的调查,我们能够通过自己修补ConstantPoolInfo并更换它来快速修复它 在它出现的罐子里 因此,对于GF4,请下载下面的源代码(例如)apply fix,编译它,并在jar中替换(对于GF4,它将位于%gf_install_dir%glassfish/modules中)。如果您使用的是较旧的GF版本,则使用相同的例程,但请确保下载该版本的源代码(随着时间的推移,会有一些小的修改)。此外,类出现在其中的JAR的名称可能不同。用于修补类的相关代码段:
/**
* New types since Java7/8
**/
public static final int METHODHANDLE = 15;
public static final int METHODTYPE = 16;
public static final int INVOKEDYNAMIC = 18;
通过将额外类型添加到方法containsAnnotation中的switch语句中,跳过这些额外类型:
case METHODHANDLE:
buffer.get();
buffer.getShort();
break;
case METHODTYPE:
buffer.getShort();
break;
case INVOKEDYNAMIC:
buffer.getShort();
buffer.getShort();
break;
要添加到类末尾常量的新类型:
/**
* New types since Java7/8
**/
public static final int METHODHANDLE = 15;
public static final int METHODTYPE = 16;
public static final int INVOKEDYNAMIC = 18;
更新:我删除了一些decorator,错误消失了,但是添加了一些新代码使我再次遇到错误。似乎在不同的组合中添加/删除新代码可能决定是否会发生此错误,我真的很困惑。