- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
部署在websphere 8.5.5.13和oracle11g上的spring4+jaxb+jpa上的应用
有时,我会看到错误消息链接与最大连接池大小:
Connection not available while invoking method createOrWaitForConnection for resource
那么,正确的解决方法是什么1. 只需将池连接大小增加到 502.代码重构
您是否在我的代码中看到了一些未关闭的连接,我在使用 JPA 时是否遇到了粗鲁的错误?
我的服务是:
@Service
public class UserService {
@Autowired
private UserRepository repository;
@Autowired
private EntityManagerFactory entityManagerFactory;
private Logger logger = Logger.getLogger(UserService.class);
public List<User> find(String name, String surname, List<String> types) throws Exception {
logger.log(Level.INFO, "UserService.find()[find by params..]");
Assert.isTrue(name != null || surname != null,
"Один из параметров name или surname обязательны для получения риск-метрики");
List<UserRecord> UserRecords = new ArrayList<>();
if (CollectionUtils.isEmpty(types)) {
UserRecords.addAll(find(name, surname));
} else {
types.stream().forEach(type -> UserRecords.addAll(find(name, surname, type)));
}
return extractUsers(UserRecords);
}
public List<User> find(String id) {
logger.log(Level.INFO, "UserService.find()[find by id]");
UserRecord UserRecord = repository.findOne(id);
if (UserRecord == null) return Collections.emptyList();
User User = (User) deserialize(UserRecord.getUser());
User.setVersion(UserRecord.getVersion());
User.setObjectId(UserRecord.getPrKey());
return Collections.singletonList(User);
}
private List<User> extractUsers(List<UserRecord> UserRecords) {
logger.log(Level.INFO, "UserService.extractUsers()");
if (CollectionUtils.isEmpty(UserRecords) || UserRecords.stream().allMatch(x -> x == null)) {
return new ArrayList<>();
}
return UserRecords.stream().map(UserRecord -> {
User User = (User) deserialize(UserRecord.getUser());
User.setVersion(UserRecord.getVersion());
User.setObjectId(UserRecord.getPrKey());
return User;
}).collect(Collectors.toList());
}
private List<UserRecord> find(String name, String surname, String UserType) {
List<UserRecord> UserRecords;
if (name != null && surname != null) {
UserRecords = repository.findUserRecordsByNameAndSurnameAndUserType(name, surname, UserType);
} else {
if (name == null) {
UserRecords = repository.findUserRecordsBySurnameAndUserType(surname, UserType);
} else {
UserRecords = repository.findUserRecordsByNameAndUserType(name, UserType);
}
}
return UserRecords.stream().allMatch(x -> x == null) ? new ArrayList<>() : UserRecords;
}
private List<UserRecord> find(String name, String surname) {
List<UserRecord> UserRecords;
if (name != null && surname != null) {
UserRecords = repository.findUserRecordsByNameAndSurname(name, surname);
} else {
if (name == null) {
UserRecords = repository.findUserRecordsBySurname(surname);
} else {
UserRecords = repository.findUserRecordsByName(name);
}
}
return UserRecords;
}
}
class UserComparator implements Comparator<User> {
@Override
public int compare(User o1, User o2) {
return Integer.compare(o1.getVersion(), o2.getVersion());
}
}
我的 Jpa 实体是:
@Entity
@Audited
@Table(name = "userRecord", uniqueConstraints = {
@UniqueConstraint(columnNames = {"name", "surname", "userType", "idCalc"})})
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@AllArgsConstructor
@Getter
@Setter
@Access(AccessType.FIELD)
public class userRecord {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "PR_KEY")
private String prKey;
//Business Key
@Column(name = "name", length = 100, unique = false)
private String name;
//Business Key
@Column(name = "surname", length = 100, nullable = false)
private String surname;
//Business Key
@Column(name = "userType", length = 100, nullable = false)
private String userType;
//Business Key
@Column(name = "idCalc", length = 64, nullable = false)
private String idCalc;
@Version
private int version;
@Column(name = "user", length = 100000)
@Lob
private byte[] user;
public userRecord(String name, String surname, String userType, byte[] user) {
this.name = name;
this.surname = surname;
this.userType = userType;
this.user = user;
}
public userRecord(String name, String surname, String userType,
String idCalc, byte[] user) {
this.name = name;
this.surname = surname;
this.userType = userType;
this.user = user;
this.idCalc = idCalc;
}
}
我的存储库是:
@Repository
public interface RickMetricRepository extends CrudRepository<userRecord, String> {
List<userRecord> finduserRecordsBynameAndsurnameAnduserType(
String name, String surname, String userType);
userRecord finduserRecordBynameAndsurnameAnduserTypeAndIdCalc(
String name, String surname, String userType, String idCalc);
List<userRecord> finduserRecordsBynameAndsurname(String name, String surname);
List<userRecord> finduserRecordsBysurname(String surname);
List<userRecord> finduserRecordsBysurnameAnduserType(String surname, String userType);
List<userRecord> finduserRecordsBynameAnduserType(String name, String userType);
List<userRecord> finduserRecordsByname(String name);
userRecord finduserRecordByPrKey(String id);
}
我需要一些 CLOSE CONNECTION 操作吗?
最佳答案
在正常情况下,除非存在连接泄漏,否则不会有长时间使用的连接。所以很明显应用程序没有关闭连接。应用程序完成工作后需要关闭连接。
此问题主要发生在新应用程序部署期间,当应用程序未关闭连接或存在连接泄漏时。每个连接都应该采用以下模式:获取/使用/关闭
当您在新应用程序的跟踪中看到此类错误时,首先要检查的是新应用程序中的连接代码模式。它应该遵循 get-use-close 连接。每个连接都应该正确关闭,然后只有连接返回到池中,并准备好用于下一个 getConnection
调用。如果应用程序未关闭连接并耗尽连接,则新的 getConnection
请求无法在其 ConnectionWaitTimeout
间隔内获取连接。
您可以获取更多信息here .
关于java - 调用资源的 createOrWaitForConnection 方法时连接不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648900/
部署在websphere 8.5.5.13和oracle11g上的spring4+jaxb+jpa上的应用 有时,我会看到错误消息链接与最大连接池大小: Connection not availabl
我是一名优秀的程序员,十分优秀!