Related: #2952 Motivation: META-INF/io.netty.versions.properties in netty-all-*.jar does not contain the version information about the netty-transport-epoll module. Modifications: Fix a bug in the regular expression in pom.xml, so that the artifacts with a classifier is also included in the version properties file. Result: The version information of all modules are included in the version properties file, and Version.identify() does not miss netty-transport-epoll.
Motivation: So far, we relied on the domain name resolution mechanism provided by JDK. It served its purpose very well, but had the following shortcomings: - Domain name resolution is performed in a blocking manner. This becomes a problem when a user has to connect to thousands of different hosts. e.g. web crawlers - It is impossible to employ an alternative cache/retry policy. e.g. lower/upper bound in TTL, round-robin - It is impossible to employ an alternative name resolution mechanism. e.g. Zookeeper-based name resolver Modification: - Add the resolver API in the new module: netty-resolver - Implement the DNS-based resolver: netty-resolver-dns .. which uses netty-codec-dns - Make ChannelFactory reusable because it's now used by io.netty.bootstrap, io.netty.resolver.dns, and potentially by other modules in the future - Move ChannelFactory from io.netty.bootstrap to io.netty.channel - Deprecate the old ChannelFactory - Add ReflectiveChannelFactory Result: It is trivial to resolve a large number of domain names asynchronously.
Related issue: #1133 Motivation: There is no support for client socket connections via a proxy server in Netty. Modifications: - Add a new module 'handler-proxy' - Add ProxyHandler and its subclasses to support SOCKS 4a/5 and HTTP(S) proxy connections - Add a full parameterized test for most scenarios - Clean up pom.xml Result: A user can make an outgoing connection via proxy servers with only trivial effort.
The HTTP/2 codec is missing from the netty-all maven dependency. This means third party libraries have to pull in additional dependencies above netty-all to use this codec. Modifications: Add HTTP/2 codec to netty-all Result: Third party libraries don't need to pull in additional dependencies to use HTTP/2 codec.
MQTT is a open source protocol on top of TCP which is widely used in mobile communication and also for IoT (Internet of Things) today. This will add an open source implementation of MQTT so that it becomes easier for Netty users to implement an MQTT application. For more information about the MQTT protocol, read this: http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html
Motivation: maven-antrun-plugin does not redirect stdin, and thus it's impossible to run interactive examples such as securechat-client and telnet-client. org.codehaus.mojo:exec-maven-plugin redirects stdin, but it buffers stdout and stderr, and thus an application output is not flushed timely. Modifications: Deploy a forked version of exec-maven-plugin which flushes output buffers in a timely manner. Result: Interactive examples work. Launches faster than maven-antrun-plugin.
Motivation: - dependencyVersionsDir property is not resolved during the build process. The build doesn't fail because of this, but it creates an ugly directory. - All-in-one JAR contains libnetty-tcnative.so, which is not part of the all-in-one JAR. Modifications: - Fix an incorrect property name (dependencyVersionDir -> dependencyVersionsDir) - Exclude libnetty-tcnative.so - Remove unnecessary includes in source expanding configuration Result: - Cleaner pom.xml - We do not ship libnetty-tcnative.so in all-in-one JAR anymore, which is correct, because strictly speaking the native library belongs to org.apache.tomcat.jni package.
Motivation: exec-maven-plugin does not flush stdout and stderr, making the console output from the examples invisible to users Modification: Use maven-antrun-plugin instead Result: A user sees the output from the examples immediately.
Motivation: oss.sonatype.org refuses to promote an artifact if it doesn't have the default JAR (the JAR without classifier.) Modifications: - Generate both the default JAR and the native JAR to make oss.sonatype.org happy - Rename the profile 'release' to 'restricted-release' which reflects what it really does better - Remove the redundant <quickbuild>true</quickbuild> in all/pom.xml We specify the profile 'full' that triggers that property already in maven-release-plugin configuration. Result: oss.sonatype.org is happy. Simpler pom.xml
Motivation: Netty must be released from RHEL 6.5 x86_64 or compatible so that: 1) we ship x86_64 version of epoll transport officially, and 2) we ensure the ABI compatibility with older GLIBC versions. The shared library built on a distribution with newer GLIBC will not run on older distributions. Modifications: - When 'release' profile is active, perform an additional check using maven-enforcer-plugin so that 'mvn release:*' fails when running on non-RHEL6.5. This rule is active only when releasing, so a user should not be affected. - Simplify maven-release-plugin configuration by removing redundant profiles such as 'linux'. 'linux' is automatically activated when releasing because we now enforce the release occurs on linux-x86_64. - Remove the no-osgi profile, which is unused - Remove the reference to 'sonatype-oss-release' profile in all/pom.xml, because we always specify 'release' profile when releasing - Rename the profile 'linux-native' to 'linux' for brevity - Upgrade oss-parent and maven-enforcer-plugin Result: No one can make a mistake to release Netty on an environment that can produce incompatible or missing native library.
…JARs - Fixes #2003 properly - Instead of using 'bundle' packaging, use 'jar' packaging. This is more robust because some strict build tools fail to retrieve the artifacts from a Maven repository unless their packaging is not 'jar'. - All artifacts now contain META-INF/io.netty.version.properties, which provides the detailed information about the build and repository. - Removed OSGi testsuite temporarily because it gives false errors during split package test and examination. - Add io.netty.util.Version for easy retrieval of version information
…n-one JAR and Xref .. so that IDEA does not add all/target/src and all/target/classes to the source and class path.