我将 Localstack 与 Testcontainers((testcontainers:localstack:1.15.2 )) 一起使用进行集成测试,并在测试设置中设置秘密,如下所示:代码示例
import com.amazonaws.services.secretsmanager.AWSSecretsManager;
import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder;
import com.amazonaws.services.secretsmanager.model.CreateSecretRequest;
import org.junit.Rule;
import org.junit.Test;
import org.testcontainers.containers.localstack.LocalStackContainer;
import org.testcontainers.utility.DockerImageName;
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.SECRETSMANAGER;
public class QueueServiceTest {
DockerImageName localstackImage = DockerImageName.parse("localstack/localstack:0.11.3");
@Rule
public LocalStackContainer localstack = new LocalStackContainer(localstackImage)
.withServices(SECRETSMANAGER).withEnv("LOCALSTACK_HOSTNAME", "localhost").withEnv("HOSTNAME", "localhost");
@Test
public void someTestMethod() {
AWSSecretsManager secretsManager = AWSSecretsManagerClientBuilder.standard()
.withCredentials(localstack.getDefaultCredentialsProvider()).withRegion(localstack.getRegion())
.build();
String secretString = "usrnme";
CreateSecretRequest request = new CreateSecretRequest().withName("test")
.withSecretString(secretString)
.withRequestCredentialsProvider(localstack.getDefaultCredentialsProvider());
secretsManager.createSecret(request);
}
}
Run Code Online (Sandbox Code Playgroud)
现在测试崩溃并出现错误:
com.amazonaws.services.secretsmanager.model.AWSSecretsManagerException:请求中包含的安全令牌无效。(服务:AWSSecretsManager;状态代码:400;错误代码:UnrecognizedClientException;请求 ID:314b0dee-69ed-4b08-9cd0-2618b8e14b25;代理:null)
在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1819) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1403) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest (AmazonHttpClient.java:1372) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145) 在 com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802) …
amazon-web-services secret-manager testcontainers localstack
我在apache tomcat5.5上使用Spring 2.0.6和Hibernate 3.2.x,现在我们计划将我们的hybernate映射文件改为hybernate + jpa支持映射文件.为此,我们创建了这样的文件
daoConfig.xml
<beans:bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<beans: property name="jndiName">
<beans: value>java:/comp/jdbc/Paymentsdb</beans:value>
</beans: property>
</beans: bean>
<beans: bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<beans: property name="useTransactionAwareDataSource"
value="true" />
<beans: property name="dataSource">
<beans:ref bean="dataSource"/>
</beans: property>
<beans: property name="hibernateProperties">
<beans: props>
<beans:prop key="hibernate.dialect">${database.target}</beans:prop>
<beans:prop key="hibernate.connection.isolation">3</beans:prop>
<beans:prop key="hibernate.current_session_context_class">jta</beans:prop>
<beans:prop key="hibernate.transaction.factory_class">com.atomikos.icatch.jta.hibernate3.AtomikosJTATransactionFactory
</beans:prop>
<beans: prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
</beans: prop>
<beans: prop key="hibernate.connection.release_mode">on_close</beans: prop>
<beans: prop key="hibernate.show_sql">false</beans: prop>
</beans: props>
</beans: property>
</beans: bean>
<beans: bean id="jpaTemplate"
class="org.springframework.orm.jpa.JpaTemplate">
<beans: property name="entityManagerFactory">
<beans:ref bean="entityManagerFactory" />
</beans: property> …Run Code Online (Sandbox Code Playgroud) 我坚持使用JPA 2.0中的CriteriaBuilder构建动态查询.我的应用程序是Spring 3.0,基于Hibernate 3.6.0 + JPA 2.0.实际上我有两个实体taUser,另一个是taContact,在我的taUser班级有一个属性,与taContact我的pojo类有多对一的关系(示例)
public class TaUser implements java.io.Serializable {
private int userId;
private TaContact taContact;
public int getUserId() {
return this.userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public TaContact getTaContact() {
return taContact;
}
public void setTaContact(TaContact taContact) {
this.taContact = taContact;
}
}
public class TaContact implements java.io.Serializable {
private int contactId;
public int getContactId() {
return this.contactId;
}
public void setContactId(int contactId) …Run Code Online (Sandbox Code Playgroud)