我已经下载了RedshiftJDBC41-1.1.17.1007.jar来使用com.amazon.redshift.jdbc41.Driver我正在做的一些Redshift POC工作,并且已经手动将它添加到我的类路径中.
我现在想把它合并到我们的构建中,但我似乎无法找到一个依赖项名称的例子,它可以放入我的build.gradle文件或在Maven仓库中找到它.有小费吗?(注意,我只是寻找redshift jdbc,而不是旧的postgres-redshift驱动程序).
所有,我正在尝试编写一个在Axis2.1.5中调用Web服务客户端的Junit测试,并且我对如何将其设置为使用WS-Addressing感到困惑.
我使用wsdl2java生成了一个客户端存根,我正在使用来自axis2二进制分发的axis2.xml和modules存储库.
我知道我需要使用的WS-Addressing的MemberSubmission版本,我想我已经得到了正确设置(使用选项),但似乎是头不得到正确生成.(我说'似乎'因为我无法弄清楚如何使用SOAPMonitor模块 - 我也欢迎任何提示!).
然而,我的主要困惑在于"参与"寻址模块究竟需要什么.是否足以使用具有对寻址模块的引用的axis2.xml文件来设置ConfigurationContext?像这样?:
//standard out of the box axis2 configs
ConfigurationContext myConfigContext = ConfigurationContextFactory
.createConfigurationContextFromFileSystem("C:/devapps/axis2-1.5.1/repository","C:/devapps/axis2-1.5.1/conf/axis2.xml");
Options options = new Options();
EndpointReference targetEPR = new EndpointReference(
"https://host:port/service.asmx");
options.setTo(targetEPR);
//I believe this is what I'm supposed to do to specify the
//MemberSubmission version of WS-Addressing
options.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
AddressingConstants.Submission.WSA_NAMESPACE);
//No idea of this is needed or not.
options.setProperty(AddressingConstants.INCLUDE_OPTIONAL_HEADERS,
Boolean.TRUE);
options.activate(myConfigContext);
options.setAction("someAction");
CaseDetailsServiceStub stub = new CaseDetailsServiceStub(
"https://host:port/service.asmx");
stub._getServiceClient().setOptions(options);
//I'm calling this from a Junit test
assertNotNull(stub.someAction(someParam));
Run Code Online (Sandbox Code Playgroud)
使用上面设置的选项,在日志文件中看到模块从axis2.xml加载:
[INFO] Deploying …Run Code Online (Sandbox Code Playgroud) 我们正在使用JCaptcha作为我的团队正在编写的小应用程序中的验证码工具.然而,就在开发期间(在一个小团队 - 我们中的4个人),我们遇到了许多诅咒词和其他可能令人反感的词,用于实际的验证码.有没有办法过滤掉潜在的冒犯性词语,以便它们不会呈现给用户?
我有一个相当复杂的查询(HQL或Criteria查询的嵌套级别太多),因此我将其编写为SQLQuery.我真的想使用AliasToBeanResultTransformer将我的结果转换为List,但是我遇到了一些问题.我已经将代码片段包含在我现在所拥有的代码片段之下.
当我记录转换后的查询的结果时,我可以看到转换器确实创建了一个List,但是,每个AdvancedClauseSearchResultDTO中的所有字段都是null.我认为这意味着我在使用别名做错了... AliasToBeanResultTransformer无法找到要调用的正确setter.但是,AdvancedClauseSearchResultDTO类确实为我在sql字符串中别名的每个列都有公共setter.如果这是一个Criteria查询,我会使用projection为每个要返回的列定义一个别名,但我不确定如何使用SQLQuery完成同样的事情.
有关如何设置别名的建议,以便ResultTransformer可以使用它们吗?我已经看到一些有限的文档表明使用'as aliasName'方法应该可行,但它似乎不适合我.
查询字符串定义的开头片段,请注意'as'别名定义
StringBuffer clauseBaseQuery = new StringBuffer();
clauseBaseQuery.append("select ");
clauseBaseQuery.append(" clauseDetail.clause_detail_id as clauseDetailId,");
clauseBaseQuery.append(" clauseDetail.clause_id as clauseId,");
clauseBaseQuery.append(" providers.provider_name as provider, ");
clauseBaseQuery.append(" products.product_name as product, ");
Run Code Online (Sandbox Code Playgroud)
SQLQuery创建和设置resultTransformer
Query query = session.createSQLQuery(clauseBaseQuery.toString());
query.setResultTransformer(new AdvancedClauseSearchResultTransformer());
return (List<AdvancedClauseSearchResultDTO>)query.list();
Run Code Online (Sandbox Code Playgroud)
AdvancedClauseSearchResultTransformer类(使用AliasToBeanResultTransformer,然后执行一些额外的处理):
class AdvancedClauseSearchResultTransformer implements ResultTransformer {
//Use the aliasTransformer to do most of the work
ResultTransformer aliasTransformer = Transformers.aliasToBean(AdvancedClauseSearchResultDTO.class);
@Override
public List transformList(List list) {
log.debug("transforming CLAUSE results");
List<AdvancedClauseSearchResultDTO> result = aliasTransformer.transformList(list);
//for each row, set the status field
for …Run Code Online (Sandbox Code Playgroud) 我正在使用Redshift进行一些POC工作,使用来自Java程序的copy命令通过S3 json文件加载数据.这个POC正在测试我们为Redshift播种而不是日常使用的初始数据迁移.我的数据被拆分为S3中的大约7500个子文件夹,我希望能够并行插入子文件夹.每个子文件夹包含大约250个json文件,每个文件大约插入3000行.
我的类的单线程版本在大约20秒内从我的一个s3子文件夹加载文件(通过复制命令).但是,当我引入第二个线程(每个线程从BoneCP连接池获得一个redshift数据库连接)时,每个复制命令(第一个除外)大约需要40秒.当我在Redshift中运行查询以显示所有正在运行的查询时,Redshift表示它正在同时运行两个查询(如预期的那样).但是,就好像第二个查询真的在等待第一个查询开始工作之前完成.我预计每个复制命令仍然只需要20秒.Redshift控制台显示我只能运行单线程或双线程的高达60%的CPU使用率.
这可能是因为我的Redshift集群中只有一个节点吗?或者Redshift无法打开到S3的多个连接来获取数据?我很感激有关如何通过运行多线程复制命令获得性能提升的任何提示.