你需要找到该表:WF_BPS_PROFILE这个colums: HOST_URL_MANAGER,HOST_URL_WORKER,用户名,密码
我认为,在密码值与encripted wso2cabon.jks中的上一个键值,因此您需要用新值替换该值。
欲了解更多信息,你可以找到类BPSProfileDAO.java
而且该方法的定义:
/**
* Retrieve details of a BPS profile
*
* @param profileName Name of profile to retrieve
* @param tenantId Id of tenant domain
* @param isWithPasswords Whether password to be retrieved or not
* @return
* @throws WorkflowImplException
*/
public BPSProfile getBPSProfile(String profileName, int tenantId, boolean isWithPasswords) throws
WorkflowImplException
{
BPSProfile bpsProfileDTO = null;
Connection connection = IdentityDatabaseUtil.getDBConnection();
PreparedStatement prepStmt = null;
ResultSet rs;
String query = SQLConstants.GET_BPS_PROFILE_FOR_TENANT_QUERY;
try {
prepStmt = connection.prepareStatement(query);
prepStmt.setString(1, profileName);
prepStmt.setInt(2, tenantId);
rs = prepStmt.executeQuery();
if (rs.next()) {
String managerHostName = rs.getString(SQLConstants.HOST_URL_MANAGER_COLUMN);
String workerHostName = rs.getString(SQLConstants.HOST_URL_WORKER_COLUMN);
String user = rs.getString(SQLConstants.USERNAME_COLUMN);
bpsProfileDTO = new BPSProfile();
bpsProfileDTO.setProfileName(profileName);
bpsProfileDTO.setManagerHostURL(managerHostName);
bpsProfileDTO.setWorkerHostURL(workerHostName);
bpsProfileDTO.setUsername(user);
if (isWithPasswords) {
String password = rs.getString(SQLConstants.PASSWORD_COLUMN);
try {
bpsProfileDTO.setPassword(decryptPassword(password));
} catch (CryptoException | UnsupportedEncodingException e) {
throw new WorkflowImplException("Error while decrypting the password for BPEL Profile "
+ profileName, e);
}
}
}
} catch (SQLException e) {
throw new WorkflowImplException("Error when executing the sql.", e);
} finally {
IdentityDatabaseUtil.closeAllConnections(connection, null, prepStmt);
}
return bpsProfileDTO;
}
查询:
public static final String GET_BPS_PROFILE_FOR_TENANT_QUERY = "SELECT HOST_URL_MANAGER, HOST_URL_WORKER, " +
"USERNAME,PASSWORD FROM WF_BPS_PROFILE WHERE PROFILE_NAME = ? AND " +
"TENANT_ID = ? ";
一些UTIL方法:
private String encryptPassword(char[] passwordValue) throws CryptoException {
CryptoUtil cryptoUtil = CryptoUtil.getDefaultCryptoUtil();
return cryptoUtil.encryptAndBase64Encode(toBytes(passwordValue));
}
private char[] decryptPassword(String passwordValue) throws UnsupportedEncodingException, CryptoException {
CryptoUtil cryptoUtil = CryptoUtil.getDefaultCryptoUtil();
byte[] decryptedPasswordBytes = cryptoUtil.base64DecodeAndDecrypt(passwordValue);
return (new String(decryptedPasswordBytes, WFImplConstant.DEFAULT_CHARSET)).toCharArray();
}
/**
* Convert a char array into a byte array
*
* @param chars
* @return
*/
private byte[] toBytes(char[] chars) {
CharBuffer charBuffer = CharBuffer.wrap(chars);
ByteBuffer byteBuffer = Charset.forName(WFImplConstant.DEFAULT_CHARSET).encode(charBuffer);
byte[] bytes = Arrays.copyOfRange(byteBuffer.array(),
byteBuffer.position(), byteBuffer.limit());
Arrays.fill(charBuffer.array(), '\u0000');
Arrays.fill(byteBuffer.array(), (byte) 0);
return bytes;
}
您是否启用了BPS AnalyticsServerProfile? – Bee
我没有做任何特别的事情来启用它.. 我正在使用预先打包的版本......我刚刚安装了我的新证书 – Jocket
您是否找到了解决方案?使用别名wso2carbon更新ssl cert后,我有同样的事情。 wso2文件明确表示这很好,但是当你改变它时,一切都停止工作:( –