SpringBoot+Maven+Dubbo+Zookeeper+CentOS7 项目搭建与发布到阿里云服务器

      由于最近项目要用到dubbo+zookeeper。所以就在网上找了一些例子来看,试着自己搭建了一个项目,并放到了服务器上,大家有兴趣可以访问。这篇文章主要记录项目搭建以及部署过程中踩过的坑,希望能帮到你。。。

项目结构如下:

SpringBoot+Maven+Dubbo+Zookeeper+CentOS7 项目搭建与发布到阿里云服务器_第1张图片项目目录结构

项目是idea新建一个简单springboot项目,然后在这个项目基础上新建两个module项目:

springboot-dubbo-provider项目:

pom文件:



	4.0.0

	com.wty.DubboWty
	dubboclient
	0.0.1-SNAPSHOT
	jar

	dubboclient
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		2.0.2.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		

		
		
			com.alibaba
			dubbo
			2.4.10
			
				
					spring
					org.springframework
				
			
		
		
			org.apache.zookeeper
			zookeeper
			3.4.6
			
				
					slf4j-log4j12
					org.slf4j
				
			
		
		
			com.github.sgroschupf
			zkclient
			0.1
		








	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
                
                    exec
                
			

		

	



注:这里有个坑,就是最后打包的时候,必须加上


    exec

,如果不加,本地跑是没有问题的,但是打包发布服务的时候就有问题了,具体什么意思,可以看这篇文章:

        https://blog.csdn.net/guduyishuai/article/details/60968728

 

接口类:

public interface SayHello {
    String sayHello(String name);
}

实现类:

@Service
public class SayHelloImpl implements SayHello{
    @Override
    public String sayHello(String name) {
        System.out.println("service 被调用了");
        return "Hello "+name;
    }
}

项目resources目录下新建dubbo-provider.xml配置文件:





    
    
    

    
    
    
    

    
    

    
    
    
    

启动类加上注解

@ImportResource(value = {"classpath:dubbo-provider.xml"})扫描配置文件:
@SpringBootApplication
@ImportResource(value = {"classpath:dubbo-provider.xml"})
public class SpringbootDubboProviderApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootDubboProviderApplication.class, args);
	}
}

 

 

springboot-dubbo-consumer项目:

pom文件:



	4.0.0

	com.wty.dubbo
	springboot-dubbo-consumer
	0.0.1-SNAPSHOT
	jar

	springboot-dubbo-consumer
	Demo project for Spring Boot

	
		org.springframework.boot
		spring-boot-starter-parent
		2.0.2.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
        
            com.wty.dubbo
            springboot-dubbo-provider
            0.0.1-SNAPSHOT
        
		
			
			
			
		




		
		
			com.alibaba
			dubbo
			2.4.10
			
				
					spring
					org.springframework
				
			
		
		
			org.apache.zookeeper
			zookeeper
			3.4.6
			
				
					slf4j-log4j12
					org.slf4j
				
			
		
		
			com.github.sgroschupf
			zkclient
			0.1
		

	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	



SayHelloController类:
@RestController
public class SayHelloController {
    @Autowired
    SayService sayService;

    @RequestMapping("/hello")
    public String say(@RequestParam("name") String name) {
        System.out.println("name:" +name);
        return sayService.say(name);
    }


}
SayService类:
@Component
public class SayService  {

    @Resource
   private SayHello sayHello;

    public String say (String name) {
        System.out.println("服务层"+name);
       String s= sayHello.sayHello(name);
        return s;
    }

}

注:这里有个坑,就是@Reference注解千万不能用,用了就报错。后来改用@Resource就不报错了。

具体两者之间差异自行百度。

项目resources目录下新建dubbo-consumer.xml配置文件:






    
    

    
    
    

    
    

启动类:

@SpringBootApplication
@ImportResource("classpath:dubbo-consumer.xml")
public class SpringbootDubboConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootDubboConsumerApplication.class, args);
	}
}

注:因为是两个项目同时启动,所以要改一下项目启动端口号。这个很简单,在项目application.properties里面加上一行代码:

server.port=8012 就可以了。建议两个项目都改一下,不要和其他项目冲突。

现在项目基本搭建完成,只要你配置的zookeeper服务器正常可以访问,那么这个项目就肯定没有问题。启动的时候先启动provider,再启动consumer就行。

 

接下来说一下打包部署的事,打包的时候provider项目要install到本地仓库中去,因为加了 exec 代码,所以会在本地仓库生成两个jar包,一个是可依赖的,一个是可执行的。

SpringBoot+Maven+Dubbo+Zookeeper+CentOS7 项目搭建与发布到阿里云服务器_第2张图片

部署的时候部署可依赖jar包就可以了。然后package consumer项目的时候provider项目必须时启动状态,要不然打包也是不成功的。把这两个jar包打包成功后就可以上传服务器启动了。这里还要注意一点就是启动的时候不要java -jar 这样启动一个再启动另一个的话第一个项目会停掉,建议使用后台启动命令

nohup java -jar wty-0.0.1-SNAPSHOT.jar > wty.log  2>&1 &    后台启动 日志打印到wty.log文件中 返回进程号  

这个时候就可以访问了。。。这是我的项目,可以访问的:

http://wxxcxxx.top:8012/hello?name="你的名字”

代码上传到github欢迎讨论:

https://github.com/yiTian66/dubboclient

你可能感兴趣的:(java)