精华内容
下载资源
问答
  • 记录一次netty部署在docker容器的坑

    千次阅读 2019-07-12 14:34:29
    记录一次在netty部署在docker容器的坑 最近学netty的时候 ,在本地跑了程序完全没问题,可是到部署到服务器,发现websocket没有监听端口,服务器是开了这个端口(8082)的,然后中午吃了个饭,突然想通了.我部署在docker容器...

    记录一次在netty部署在docker容器的坑

    最近学netty的时候 ,在本地跑了程序完全没问题,可是到部署到服务器,发现websocket没有监听端口,服务器是开了这个端口(8082)的,然后中午吃了个饭,突然想通了.我部署在docker容器里面,那么监听的应该是容器的端口(8082)
    在这里插入图片描述

    然后把这个端口映射到宿主机之后 就可以正常执行程序了.

    展开全文
  • 网络编程--(四)Netty部署测试

    千次阅读 2018-05-01 10:53:41
    服务端程序分开部署 package bhz.netty.test; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel....

     

    服务端程序分开部署

     

    复制代码
    package bhz.netty.test;
    
    import io.netty.bootstrap.ServerBootstrap;
    import io.netty.channel.ChannelFuture;
    import io.netty.channel.ChannelInitializer;
    import io.netty.channel.ChannelOption;
    import io.netty.channel.EventLoopGroup;
    import io.netty.channel.nio.NioEventLoopGroup;
    import io.netty.channel.socket.SocketChannel;
    import io.netty.channel.socket.nio.NioServerSocketChannel;
    
    public class Server {
    
        public static void main(String[] args) throws Exception {
            //1 第一个线程组 是用于接收Client端连接的
            EventLoopGroup bossGroup = new NioEventLoopGroup();
            //2 第二个线程组 是用于实际的业务处理操作的
            EventLoopGroup workerGroup = new NioEventLoopGroup();
            
            //3 创建一个辅助类Bootstrap,就是对我们的Server进行一系列的配置
            ServerBootstrap b = new ServerBootstrap(); 
            //把俩个工作线程组加入进来
            b.group(bossGroup, workerGroup)
            //我要指定使用NioServerSocketChannel这种类型的通道
             .channel(NioServerSocketChannel.class)
            //一定要使用 childHandler 去绑定具体的 事件处理器
             .childHandler(new ChannelInitializer<SocketChannel>() {
                @Override
                protected void initChannel(SocketChannel sc) throws Exception {
                    sc.pipeline().addLast(new ServerHandler());
                } 
            });
    
            //绑定指定的端口 进行监听
            ChannelFuture f = b.bind(8765).sync(); 
            ChannelFuture f2 = b.bind(8764).sync(); 
            
            //Thread.sleep(1000000);
            f.channel().closeFuture().sync();   //等待关闭
            f2.channel().closeFuture().sync();
            
            bossGroup.shutdownGracefully();
            workerGroup.shutdownGracefully();
             
            
            
        }
        
    }
    复制代码
    复制代码
    package bhz.netty.test;
    
    import io.netty.buffer.ByteBuf;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelFuture;
    import io.netty.channel.ChannelFutureListener;
    import io.netty.channel.ChannelHandlerAdapter;
    import io.netty.channel.ChannelHandlerContext;
    import io.netty.util.ReferenceCountUtil;
    
    public class ServerHandler  extends ChannelHandlerAdapter {
    
        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        
                //do something msg
                ByteBuf buf = (ByteBuf)msg; 
                byte[] data = new byte[buf.readableBytes()];
                buf.readBytes(data);
                String request = new String(data, "utf-8");
                System.out.println("Server: " + request);
                //写给客户端
                String response = "我是反馈的信息";
                ctx.writeAndFlush(Unpooled.copiedBuffer("888".getBytes()))
                .addListener(ChannelFutureListener.CLOSE);   //当服务器端写完客户端收到后断开客户端连接
                
    
        }
    
        @Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
            cause.printStackTrace();
            ctx.close();
        }
    
    }
    复制代码
    复制代码
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>deploy</groupId>
      <artifactId>deploy</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>deploy</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
        
      <build>
          <pluginManagement>
              <plugins>
              <!-- 解决Maven插件在eclipse内执行了一系列的生命周期引起冲突 -->
                  <plugin>
                      <groupId>org.eclipse.m2e</groupId>
                      <artifactId>lifecycle-mapping</artifactId>
                      <version>1.0.0</version>
                      <configuration>
                          <lifecycleMappingMetadata>
                              <pluginExecutions>
                                  <pluginExecution>
                                      <pluginExecutionFilter>
                                           <groupId>org.apache.maven.plugins</groupId>
                                         <artifactId>maven-dependency-plugin</artifactId>
                                         <versionRange>[2.0,)</versionRange>
                                         <goals>
                                             <goal>copy-dependencies</goal>
                                         </goals>
                                      </pluginExecutionFilter>
                                      <action>
                                          <ignore/>
                                      </action>
                                  </pluginExecution>
                              </pluginExecutions>
                          </lifecycleMappingMetadata>
                      </configuration>
                  </plugin>
              </plugins>
          </pluginManagement>
          
          <plugins>
              <!-- 打包jar文件时,配置manifest文件,加入lib包jar依赖 -->
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-jar-plugin</artifactId>
                  <configuration>
                      <classesDirectory>target/classes</classesDirectory>
                      <archive>
                          <manifest>
                              <!-- 指定主程序入口 -->
                              <mainClass>bhz.netty.test.Server</mainClass>
                              <!-- 打包时MANIFEST.MF文件不记录的时间戳版本 -->
                              <useUniqueVersions>false</useUniqueVersions>
                              <addClasspath>true</addClasspath>
                              <!-- 指定lib -->
                              <classpathPrefix>lib</classpathPrefix>
                          </manifest>
                          <manifestEntries>
                              <Class-Path>.</Class-Path>
                          </manifestEntries>
                      </archive>
                  </configuration>
              </plugin>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                      <execution>
                          <id>copy-dependencies</id>
                          <phase>package</phase>
                          <goals>
                              <goal>copy-dependencies</goal>
                          </goals>
                          <configuration>
                              <type>jar</type>
                              <includeTypes>jar</includeTypes>
                              <useUniqueVersions>false</useUniqueVersions>
                              <!-- 依赖包存放的位置 -->
                              <outputDirectory>
                                  ${project.build.directory}/lib
                              </outputDirectory>
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
              
          </plugins>
          
      </build>
          
      <dependencies>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>5.0.0.Alpha1</version>
        </dependency>
        
    
      </dependencies>
    </project>
    复制代码

     run as>maven install

    只需要 deploy-0.0.0-SNAPSHOT.jar 和lib文件夹放到服务器上启动jar即可

    java -jar  deploy-0.0.1-SNAPSHOT.jar

     

     客户端程序

    复制代码
    package bhz.netty.test;
    
    import io.netty.bootstrap.Bootstrap;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelFuture;
    import io.netty.channel.ChannelInitializer;
    import io.netty.channel.EventLoopGroup;
    import io.netty.channel.nio.NioEventLoopGroup;
    import io.netty.channel.socket.SocketChannel;
    import io.netty.channel.socket.nio.NioSocketChannel;
    
    public class Client {
    
        public static void main(String[] args) throws Exception {
            
            EventLoopGroup workgroup = new NioEventLoopGroup();
            Bootstrap b = new Bootstrap();
            b.group(workgroup)
            .channel(NioSocketChannel.class)
            .handler(new ChannelInitializer<SocketChannel>() {
                @Override
                protected void initChannel(SocketChannel sc) throws Exception {
                    sc.pipeline().addLast(new ClientHandler());
                }
            });
            
            ChannelFuture cf1 = b.connect("127.0.0.1", 8765).sync();
            ChannelFuture cf2 = b.connect("127.0.0.1", 8764).sync();
            
            //写入
            cf1.channel().writeAndFlush(Unpooled.copiedBuffer("777".getBytes()));
            cf2.channel().writeAndFlush(Unpooled.copiedBuffer("111".getBytes()));
            
            cf1.channel().closeFuture().sync();
            cf2.channel().closeFuture().sync();
            workgroup.shutdownGracefully();
            
        }
    }
    复制代码
    复制代码
    package bhz.netty.test;
    
    import io.netty.buffer.ByteBuf;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelHandlerAdapter;
    import io.netty.channel.ChannelHandlerContext;
    import io.netty.util.ReferenceCountUtil;
    
    public class ClientHandler extends ChannelHandlerAdapter {
    
        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
            try {
                //do something msg
                ByteBuf buf = (ByteBuf)msg;
                byte[] data = new byte[buf.readableBytes()];
                buf.readBytes(data);
                String request = new String(data, "utf-8");
                System.out.println("Client: " + request);
                
                
            } finally {
                ReferenceCountUtil.release(msg);
            }
        }
    
        @Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
            cause.printStackTrace();
            ctx.close();
        }
    }
    复制代码

     

    展开全文
  • Netty部署集群后都会遇到跨服务端怎么通信,也就是有集群服务X和Y,用户A链接服务X,用户B链接服务Y,那么他们都不在一个服务内怎么通信?本章节将介绍一种实现方式案例,以满足跨服务之间的用...

    前言介绍

    微信公众号:bugstack虫洞栈

    Netty的性能非常好,在一些小型用户体量的socket服务内,仅部署单台机器就可以满足业务需求。但当遇到一些中大型用户体量的服务时,就需要考虑讲Netty按照集群方式部署,以更好的满足业务诉求。但Netty部署集群后都会遇到跨服务端怎么通信,也就是有集群服务X和Y,用户A链接服务X,用户B链接服务Y,那么他们都不在一个服务内怎么通信?本章节将介绍一种实现方式案例,以满足跨服务之间的用户通信。但实际场景中需要进行一些扩展性改造,案例仅将核心主干思路做以实现,只是一种思路指导,并不能直接使用于业务开发。

    本章知识点

    • 跨服务之间案例采用redis的发布和订阅进行传递消息,如果你是大型服务可以使用zookeeper
    • 用户A在发送消息给用户B时候,需要传递B的channeId,以用于服务端进行查找channeId所属是否自己的服务内
    • 单台机器也可以启动多个Netty服务,程序内会自动寻找可用端口

    环境准备

    1、jdk1.8【jdk1.7以下只能部分支持netty】
    2、Netty4.1.36.Final【netty3.x 4.x 5每次的变化较大,接口类名也随着变化】
    3、NetAssist 网络调试助手,可以从网上下载也可以联系我ÿ

    展开全文
  • netty案例,netty4.1中级拓展篇九《Netty集群部署实现跨服务端通信的落地方案》源码 ...
  • Netty服务器部署

    千次阅读 2015-05-10 16:22:10
    1.终端访问工具:putty 2.ftp上传工具:FlashFXP 3.运行服务器程序:java -jar *.jar 2>&1|cat -n >> log.txt & 4.查看进程:ps aux|grep java

    申请云服务器之后可以通过

    1.终端访问工具:putty,访问服务器

    2.ftp上传工具:FlashFXP,上传服务器代码

    3.运行服务器程序:java -jar *.jar 2>&1|cat -n >> log.txt &

    4.查看进程:ps aux|grep java

    服务器性能监控后续更新


    运行java服务器之后,可以用Apache服务器自带的ab来测试性能

    http://jingyan.baidu.com/article/e3c78d647a57833c4c85f502.html


    展开全文
  • netty的使用部署

    2017-12-26 19:29:00
    Java Nio教程 http://www.iteye.com/magazines/132-Java-NIO#590 Java线程池的使用 http://www.cnblogs.com/dolphin0520/p/3932921.html 饿了吗netty ...netty websocket JQuery做一个游戏...
  • 工程背景:springboot + netty(如果单纯的springboot同样适用) 工程打包,包括:工程IP的更换,数据库IP地址更换。 工程上传到指定服务器,数据库导入服务器数据库管理系统。 通过命令运行服务器中上传的工程包。 ...
  • idea部署netty4.1源码

    千次阅读 2019-09-27 09:35:53
    idea部署netty源码 netty源码部署后会有一个错误: 报缺LongObjectHashMap的包 解决方法: 源码下载地址: https://netty.io/downloads.html 1.下载后解压 2.用idea打开netty目录 3.用idea的Terminal执行命令 cd...
  • Netty服务器部署在Android设备上,接收来自PC客户端的Java Socket客户端发送的数据 一个简单的模型,在Android手机上部署一个Netty写的服务器,绑定端口9000,等待客户端连接,连接建立后,读取来自PC客户端的...
  • 基于Netty实现websocket集群部署实现方案 每天多学一点点~ 话不多说,这就开始吧… 文章目录基于Netty实现websocket集群部署实现方案1.前言2. 整体思路3. 代码demo4. 测试5.结语 1.前言 最近公司在做saas平台,其中...
  • cassandra-netty-rest-simple 集成了Cassandra,Netty和JBoss RESTEasy的简单应用程序。 它提供了一个Hello World REST Web服务,可以通过。 调用服务时,它将Person的实例持久化到名为DEMO的Cassandra键空间中。
  • 在eclipse使用maven deploy (tomcat:deploy) 热部署netty项目 ,项目启动的时候会报错端口被占用。 [code="java"] java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native ...
  • Netty

    万次阅读 2018-03-02 14:55:08
    Netty概述:1、netty是基于Java NIO的网络应用框架,client-server框架2、Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞...
  • Netty-socketio Overview This project is an open-source Java implementation of Socket.IO server. Based on Netty server framework. Checkout Demo project Licensed under the Apache License 2.0. Features ...
  • 阿里云部署netty-socketio遇到的坑

    千次阅读 2020-02-23 22:47:36
    在本地部署用localhost,线上部署不能有Hostname,否则连接会一直失败 package com.ydkj.netty.server; import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.SocketIOClient; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,186
精华内容 9,674
关键字:

netty部署