[
https://issues.apache.org/jira/browse/DIRMINA-1053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15644174#comment-15644174
]
Emmanuel Lecharny commented on DIRMINA-1053:
--------------------------------------------
Regarding private inner classes, we have many :
* CachedBufferAllocator.CachedBuffer
* SimpleBufferAllocator.SimpleBuffer
* DefaultIoFilterChain.EntryImpl
* DefaultIoFilterChain.HeadFilter
* DefaultIoFilterChain.TailFilter
* CompositeIoFuture.NotifyingListener
* AbstractPollingIoAcceptor.Acceptor
* AbstractPollingIoConnector.Connector
* AbstractPollingIoProcessor.Processor
* ExpiringSessionRecycler.DefaultExpirationListener
* IdleStatusChecker.NotifyingTask
* IdleStatusChecker.SessionCloseListener
* DemuxingProtocolDecoder.DefaultConstructorMessageDecoderFactory
* DemuxingProtocolDecoder.SingletonMessageDecoderFactory
* DemuxingProtocolDecoder.State
* DemuxingProtocolEncoder.DefaultConstructorMessageEncoderFactory
* DemuxingProtocolEncoder.SingletonMessageEncoderFactory
* DemuxingProtocolEncoder.State
* TextLineDecoder.Context
* OrderedThreadPoolExecutor.SessionTasksQueue
* OrderedThreadPoolExecutor.Worker
* UnorderedThreadPoolExecutor.Worker
* ConnectionThrottleFilter.ExpiredSessionThread
* ProfilerTimerFilter.TimerWorker
* WriteRequestFilter.FilteredWriteRequest
* NioDatagramAcceptor.Acceptor
* NioSocketSession.SessionConfigImpl
* VmPipeFilterChain.VmPipeIoProcessor
* BufferByteArray.CursorImpl
* ByteArrayPool.DirectBufferByteArray
* CompositeByteArray.CursorImpl
* ExpiringMap.Expirer
* ExpiringMap.ExpiringObject
* ObjectMBean.OgnlTypeConverter
* AprDatagramSession.SessionConfigImpl
* AprSocketSession.SessionConfigImpl
* SerialSessionImpl.ReadWorker
* SerialSessionImpl.SerialIoProcessor
* SerialSessionImpl.WriteWorker
My question is : should we add all of them in <Package-Private>, assuming the
encapsulating class is exported, of course ?
> Osgi error when disposing NioSocketAccessor
> -------------------------------------------
>
> Key: DIRMINA-1053
> URL: https://issues.apache.org/jira/browse/DIRMINA-1053
> Project: MINA
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.0.16
> Reporter: Antonio Maria
>
> This exception is raised when disposing a NioProcessor in osgy environments.
> {code}
> 2016-11-07 08:50:21,767 | WARN | NioSocketAcceptor-1
> |
> org.apache.mina.core.service.SimpleIoProcessorPool | 100 -
> org.apache.mina.core - 2.0.13.1 | Failed to dispose the NioProcessor
> IoProcessor.
> java.lang.IllegalStateException: Unknown protocol: mvn
> at
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.toExternalForm(URLHandlersStreamHandlerProxy.java:482)
> at
> org.apache.felix.framework.URLHandlersStreamHandlerProxy.toExternalForm(URLHandlersStreamHandlerProxy.java:474)
> at java.net.URL.toExternalForm(URL.java:929)
> at java.net.URL.toString(URL.java:915)
> at java.lang.ClassLoader.defineClassSourceLocation(ClassLoader.java:678)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:762)
> at
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2370)
> at
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2154)
> at
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1542)
> at
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
> at
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.startupProcessor(AbstractPollingIoProcessor.java:438)
> at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.dispose(AbstractPollingIoProcessor.java:182)
> at
> org.apache.mina.core.service.SimpleIoProcessorPool.dispose(SimpleIoProcessorPool.java:329)
> at
> org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:508)
> at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
> 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)
> {code}
> The root causes resides how the osgi manifest descriptor is created.
> In mina-core/pom.xml Maven-bundle-plugin definition
> {code}
> <Export-Package>
> org.apache.mina.core.polling;version=${project.version};-noimport:=true,
> </Export-Package>
> {code}
> Therefore: org.apache.mina.core.polling.AbstractPollingIoProcessor is
> exported, but this class has a private internal class
> AbstractPollingIoProcessor.Processor that should be exported as well. But
> It's kind of contraction to export a private class, so the osgi classpath
> mechanism fails with IllegalState.
> One way to approach this problem is changing the pom.xml so:
> {code}
> ...
> <Private-Package>
> org.apache.mina.core.polling
> </Private-Package>
> ...
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)