1、启动的时候报错 Reason: Failed to determine a suitable driver class
解决方法:在启动类的 SpringBootApplication注解后增加 (exclude = {DataSourceAutoConfiguration.class})
package com.dubbo.dubbo_consumer;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableDubboConfiguration
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
2、在controller请求中,返回jsp视图的时候报错,如下
解决方法:需要将实体类实现序列化,只有实现java.io. Serializable的类才支持序列化。
1. 什么是序列化机制
将程序中的对象以文件(二进制数据)的形势进行存储.
2. 反序列化机制
将文件(二进制数据)中的数据以对象方式读到内存的过程.
3. 作用:
当你想把的内存中的对象保存到一个文件中或者数据库中时候;
当你想用序列化在网络上传送对象的时候或者RMI传输对象的时候
当你想实现缓存时
3、在启动服务提供者的时候,报错找不到mapper.xml文件,但是文件确实存在;
解决方法:1、因为没有扫描到xml文件,所以需要在服务提供者的工程的pom文件中增加以下代码;
2、在服务提供者的启动方法增加 @MapperScan("com.dubbo.dubbo_provider.mapper") 扫描mapper文件
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
@SpringBootApplication
@EnableDubboConfiguration //启动dubbo
@MapperScan("com.dubbo.dubbo_provider.mapper")
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
4、解决springboot+dubbo+zookepper采用jsp作为视图组件时,无法访问(404)
配置的视图解析器以及路径都没有问题的情况下,还是报404,原因是springboot运行项目时,不会读取webapp下的资源进行发布
解决方法:
方式一:在服务消费者的pom文件中添加以下代码:
<!--将源码目录中的xml文件一起打包发布-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!--发布webapp下的内容-->
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
</resource>
</resources>
方式二:在项目中添加一个java类的配置文件
@Configuration
public class GlobalConfig {
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> customizer() {
return (factory) -> {
factory.addContextCustomizers((context) -> {
//模块中webapp相对路径
String relativePath = "dubbo_consumer/src/main/webapp";
File docBaseFile = new File(relativePath);
// 路径是否存在
if (docBaseFile.exists()) {
context.setDocBase(docBaseFile.getAbsolutePath());
}
}
);
};
}
}