目录
一、Dubbo入门示例(一)
此示例适合了解dubbo项目,不适合在真正的项目中使用
二、项目结构
2.1 Maven项目
- dubbo-common 公共组件
- dubbo-client 客户端
- dubbo-server 服务端
2.1.1 dubbo-common
pom文件
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
代码
User.java
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
UserService.java
import com.core.common.entity.User;
public interface UserService {
public User getUser();
}
2.1.2 dubbo-service
pom
<dependency>
<groupId>com.core</groupId>
<artifactId>dubbo-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
UserserviceImpl.java
import com.core.common.entity.User;
import com.core.common.service.UserService;
public class UserServiceImpl implements UserService{
@Override
public User getUser() {
User user = new User();
user.setId(1);
user.setName("zhangsan");
return user;
}
}
SimpleServer.java
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.core.common.service.UserService;
import com.core.service.UserServiceImpl;
public class SimpleServer {
public void openServer(int port){
// 服务配置
ServiceConfig<UserService> serviceConfig = new ServiceConfig<UserService>();
// 设置服务接口
serviceConfig.setInterface(UserService.class);
// 设置开放的协议
serviceConfig.setProtocol(new ProtocolConfig("dubbo",20880));
// 设置一个空的注册中心
serviceConfig.setRegistry(new RegistryConfig(RegistryConfig.NO_AVAILABLE));
// 设置服务当前所在的应用
serviceConfig.setApplication(new ApplicationConfig("simpl-server"));
// 设置服务实现对象
serviceConfig.setRef(new UserServiceImpl());
// 暴露服务
serviceConfig.export();
System.out.println("服务已经开启:"+port);
}
public static void main(String[] args) throws Exception {
new SimpleServer().openServer(20880);
System.in.read();
}
}
2.1.3 dubbo-client
pom
<dependency>
<groupId>com.core</groupId>
<artifactId>dubbo-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
SimpleClient.java
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.core.common.entity.User;
import com.core.common.service.UserService;
public class SimpleClient {
/**
* 基于URL构建远程服务
* @param remoteUrl
* @return
*/
public UserService buildRemoteService(String remoteUrl){
ReferenceConfig<UserService> referenceConfig = new ReferenceConfig<UserService>();
// 设置服务接口
referenceConfig.setInterface(UserService.class);
// 设置URL
referenceConfig.setUrl(remoteUrl);
// 设置服务名称
referenceConfig.setApplication(new ApplicationConfig("simple-client"));
return referenceConfig.get();
}
public static void main(String[] args) {
SimpleClient yangClient = new SimpleClient();
UserService userService = yangClient.buildRemoteService("dubbo://127.0.0.1:20880/com.core.common.service.UserService");
User user = userService.getUser();
System.out.println(user);
}
}
三、项目启动
3.1 启动服务端
控制台输出:服务已经开启:20880
3.2 启动客户端
成功调用