Exception

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Exception

Hou, Chunxiao

Hi there,

 

I saw this exception (see below) which happens randomly after I upgraded Jersey to 2.3. Can someone please help to take a look? Many Thanks.

I am running embedded Grizzly server –

 

Grizzly http Server:

ResourceConfig rc = new PackagesResourceConfig(RESOURCE_DIR);

rc.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);

httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc);

 

Resource:

public abstract class AbstractGetRiskResource {

                private static final Logger logger = LoggerFactory.getLogger(AbstractGetRiskResource.class);

               

                @GET

                public Response getMessage(@Context final UriInfo uriInfo, @Context HttpHeaders hh) {

                                String requestUri = uriInfo.getRequestUri().toString();

}

 

Thanks,

David

 

Sep 23, 2013 5:51:06 PM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse

SEVERE: An I/O error has occurred while writing a response message entity to the container output stream.

org.glassfish.jersey.server.internal.process.MappableException: java.io.IOException: An established connection was aborted by the software in your host machine

       at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:96)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1139)

       at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:562)

       at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:357)

       at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:347)

       at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:258)

       at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)

       at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:315)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:297)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:267)

       at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318)

       at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)

       at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:983)

       at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:330)

       at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:209)

       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(Unknown Source)

Caused by: java.io.IOException: An established connection was aborted by the software in your host machine

       at sun.nio.ch.SocketDispatcher.write0(Native Method)

       at sun.nio.ch.SocketDispatcher.write(Unknown Source)

       at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)

       at sun.nio.ch.IOUtil.write(Unknown Source)

       at sun.nio.ch.SocketChannelImpl.write(Unknown Source)

       at org.glassfish.grizzly.nio.transport.TCPNIOTransport.flushByteBuffer(TCPNIOTransport.java:1251)

       at org.glassfish.grizzly.nio.transport.TCPNIOAsyncQueueWriter.write0(TCPNIOAsyncQueueWriter.java:107)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:273)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:180)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:70)

       at org.glassfish.grizzly.nio.transport.TCPNIOTransportFilter.handleWrite(TCPNIOTransportFilter.java:128)

       at org.glassfish.grizzly.filterchain.TransportFilter.handleWrite(TransportFilter.java:191)

       at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:111)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)

       at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)

       at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:853)

       at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:822)

       at org.glassfish.grizzly.http.io.OutputBuffer.flushBuffer(OutputBuffer.java:1011)

       at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:676)

       at org.glassfish.grizzly.http.server.NIOOutputStreamImpl.write(NIOOutputStreamImpl.java:83)

       at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:227)

       at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)

       at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)

       at sun.nio.cs.StreamEncoder.write(Unknown Source)

       at java.io.OutputStreamWriter.write(Unknown Source)

       at java.io.BufferedWriter.flushBuffer(Unknown Source)

       at java.io.BufferedWriter.write(Unknown Source)

       at org.glassfish.jersey.message.internal.ReaderWriter.writeToAsString(ReaderWriter.java:191)

       at org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:129)

       at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:99)

       at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:59)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:243)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:230)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)

       ... 19 more

 

This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.

Reply | Threaded
Open this post in threaded view
|

Re: Exception

oleksiys
Administrator
Hi David,

looks like your client (web browser?) closes the connection before reading the entire response from the server.

WBR,
Alexey.


On 23.09.13 15:01, Hou, Chunxiao wrote:

Hi there,

 

I saw this exception (see below) which happens randomly after I upgraded Jersey to 2.3. Can someone please help to take a look? Many Thanks.

I am running embedded Grizzly server –

 

Grizzly http Server:

ResourceConfig rc = new PackagesResourceConfig(RESOURCE_DIR);

rc.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);

httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc);

 

Resource:

public abstract class AbstractGetRiskResource {

                private static final Logger logger = LoggerFactory.getLogger(AbstractGetRiskResource.class);

               

                @GET

                public Response getMessage(@Context final UriInfo uriInfo, @Context HttpHeaders hh) {

                                String requestUri = uriInfo.getRequestUri().toString();

}

 

Thanks,

David

 

Sep 23, 2013 5:51:06 PM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse

SEVERE: An I/O error has occurred while writing a response message entity to the container output stream.

org.glassfish.jersey.server.internal.process.MappableException: java.io.IOException: An established connection was aborted by the software in your host machine

       at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:96)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1139)

       at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:562)

       at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:357)

       at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:347)

       at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:258)

       at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)

       at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:315)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:297)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:267)

       at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318)

       at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)

       at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:983)

       at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:330)

       at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:209)

       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(Unknown Source)

Caused by: java.io.IOException: An established connection was aborted by the software in your host machine

       at sun.nio.ch.SocketDispatcher.write0(Native Method)

       at sun.nio.ch.SocketDispatcher.write(Unknown Source)

       at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)

       at sun.nio.ch.IOUtil.write(Unknown Source)

       at sun.nio.ch.SocketChannelImpl.write(Unknown Source)

       at org.glassfish.grizzly.nio.transport.TCPNIOTransport.flushByteBuffer(TCPNIOTransport.java:1251)

       at org.glassfish.grizzly.nio.transport.TCPNIOAsyncQueueWriter.write0(TCPNIOAsyncQueueWriter.java:107)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:273)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:180)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:70)

       at org.glassfish.grizzly.nio.transport.TCPNIOTransportFilter.handleWrite(TCPNIOTransportFilter.java:128)

       at org.glassfish.grizzly.filterchain.TransportFilter.handleWrite(TransportFilter.java:191)

       at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:111)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)

       at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)

       at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:853)

       at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:822)

       at org.glassfish.grizzly.http.io.OutputBuffer.flushBuffer(OutputBuffer.java:1011)

       at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:676)

       at org.glassfish.grizzly.http.server.NIOOutputStreamImpl.write(NIOOutputStreamImpl.java:83)

       at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:227)

       at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)

       at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)

       at sun.nio.cs.StreamEncoder.write(Unknown Source)

       at java.io.OutputStreamWriter.write(Unknown Source)

       at java.io.BufferedWriter.flushBuffer(Unknown Source)

       at java.io.BufferedWriter.write(Unknown Source)

       at org.glassfish.jersey.message.internal.ReaderWriter.writeToAsString(ReaderWriter.java:191)

       at org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:129)

       at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:99)

       at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:59)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:243)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:230)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)

       ... 19 more

 

This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.


Reply | Threaded
Open this post in threaded view
|

RE: Exception

Hou, Chunxiao

Yeah, it is a web brower. I will take a further look if/how the client closes the connection before response is complete. This is very helpful info! Thanks again, Alexey.

 

From: Oleksiy Stashok [mailto:[hidden email]]
Sent: Monday, September 23, 2013 6:21 PM
To: [hidden email]
Subject: Re: Exception

 

Hi David,

looks like your client (web browser?) closes the connection before reading the entire response from the server.

WBR,
Alexey.

On 23.09.13 15:01, Hou, Chunxiao wrote:

Hi there,

 

I saw this exception (see below) which happens randomly after I upgraded Jersey to 2.3. Can someone please help to take a look? Many Thanks.

I am running embedded Grizzly server –

 

Grizzly http Server:

ResourceConfig rc = new PackagesResourceConfig(RESOURCE_DIR);

rc.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);

httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc);

 

Resource:

public abstract class AbstractGetRiskResource {

                private static final Logger logger = LoggerFactory.getLogger(AbstractGetRiskResource.class);

               

                @GET

                public Response getMessage(@Context final UriInfo uriInfo, @Context HttpHeaders hh) {

                                String requestUri = uriInfo.getRequestUri().toString();

}

 

Thanks,

David

 

Sep 23, 2013 5:51:06 PM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse

SEVERE: An I/O error has occurred while writing a response message entity to the container output stream.

org.glassfish.jersey.server.internal.process.MappableException: java.io.IOException: An established connection was aborted by the software in your host machine

       at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:96)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1139)

       at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:562)

       at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:357)

       at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:347)

       at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:258)

       at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)

       at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:315)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:297)

       at org.glassfish.jersey.internal.Errors.process(Errors.java:267)

       at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:318)

       at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)

       at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:983)

       at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:330)

       at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:209)

       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(Unknown Source)

Caused by: java.io.IOException: An established connection was aborted by the software in your host machine

       at sun.nio.ch.SocketDispatcher.write0(Native Method)

       at sun.nio.ch.SocketDispatcher.write(Unknown Source)

       at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)

       at sun.nio.ch.IOUtil.write(Unknown Source)

       at sun.nio.ch.SocketChannelImpl.write(Unknown Source)

       at org.glassfish.grizzly.nio.transport.TCPNIOTransport.flushByteBuffer(TCPNIOTransport.java:1251)

       at org.glassfish.grizzly.nio.transport.TCPNIOAsyncQueueWriter.write0(TCPNIOAsyncQueueWriter.java:107)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:273)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:180)

       at org.glassfish.grizzly.nio.AbstractNIOAsyncQueueWriter.write(AbstractNIOAsyncQueueWriter.java:70)

       at org.glassfish.grizzly.nio.transport.TCPNIOTransportFilter.handleWrite(TCPNIOTransportFilter.java:128)

       at org.glassfish.grizzly.filterchain.TransportFilter.handleWrite(TransportFilter.java:191)

       at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:111)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)

       at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)

       at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)

       at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:853)

       at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:822)

       at org.glassfish.grizzly.http.io.OutputBuffer.flushBuffer(OutputBuffer.java:1011)

       at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:676)

       at org.glassfish.grizzly.http.server.NIOOutputStreamImpl.write(NIOOutputStreamImpl.java:83)

       at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:227)

       at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)

       at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)

       at sun.nio.cs.StreamEncoder.write(Unknown Source)

       at java.io.OutputStreamWriter.write(Unknown Source)

       at java.io.BufferedWriter.flushBuffer(Unknown Source)

       at java.io.BufferedWriter.write(Unknown Source)

       at org.glassfish.jersey.message.internal.ReaderWriter.writeToAsString(ReaderWriter.java:191)

       at org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:129)

       at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:99)

       at org.glassfish.jersey.message.internal.StringMessageProvider.writeTo(StringMessageProvider.java:59)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:243)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:230)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)

       at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149)

       at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)

       ... 19 more

 

This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.

 

This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.