Tag: spring

Spring Batch – 进程在哪里运行

我试图围绕Spring Batch,虽然很多教程都展示了很好的代码示例,但我觉得我很想念“spring batch engine”是如何工作的。 场景1 – 在用户创建时,在外部服务上创建用户。 网络请求 CreateLocalUser() 启动作业CreateExternalUser() 由于许多原因,CreateExternalUser()可能会失败,因此我们希望能够重试并记录Spring Batch可以为我们执行的错误。 它也是一个与我们本地用户的创建无关的解耦过程。 工作在哪里? 它是否会与Web请求在同一个线程中运行,这意味着最终用户必须等待作业完成才能获得http状态200? 想象一下,我有一个Web服务器和一个批处理服务器。 我希望所有作业都在批处理服务器上运行,但作业本身可以从Web服务器启动。 Spring Batch可以这样做吗? 我是否需要某种可以从Web服务器写入的队列和来自批处理服务器的消费,实际的工作将从哪里开始? 场景2 – 在巨大的文件中处理行,为每一行开始新的工作 读取大文件中的行(1.000.000行) 使用文件中的输入参数为每一行开始新作业。 处理1.000.000行很快,同时启动1.000.000个新作业或多或少。 这些运行在哪里? 他们是否与初始工作异步? 我的服务器是否能够同时或多或少地处理所有这些操作。 其他问题:是否可以根据作业输入参数查询作业。 即场景1,我想在我的网页上查看ID为1234的本地用户时显示CreateExternalUser作业状态/错误。 CreateExternalUser作业具有输入参数userId:1234

为什么这个未处理的org.apache.tiles.impl.CannotRenderException?

实际上我正在努力在在线考试项目上实现Struts Spring和Hibernate Integration。 但是当我在JSP页面中提交值时,它会抛出以下错误: Struts问题报告 Struts has detected an unhandled exception: Messages: /templates/MainLayout.jsp (line: 7, column: 14) The TLD for the class org.apache.tiles.jsp.taglib.InsertAttributeTag specifies an invalid body-content (JSP) for a SimpleTag. ServletException including path ‘/templates/MainLayout.jsp’. ServletException including path ‘/templates/MainLayout.jsp’. File: org/apache/jasper/compiler/DefaultErrorHandler.java Line number: 42 ——————————————————————————– Stacktraces org.apache.tiles.impl.CannotRenderException: ServletException including path ‘/templates/MainLayout.jsp’. org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:692) org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:644) org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:627) org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:321) […]

使用Spring SearchQuery ElasticSearch进行每次点击的得分

我正在尝试通过SearchQuery进行搜索时查看并使用每个命中的invidual _score。 除其他事项外,这是了解我的搜索得分的范围。但除了使用searchQuery.withMinScore(float)设置MinScore之外; 我找不到任何处理搜索分数的方法。 @Override public Page listsearch(SearchBody searchBody, int size, int page) { BoolQueryBuilder qb = QueryBuilders.boolQuery(); for(SearchUnit unit:searchBody.getSearchBody()){ if(unit.isPriority()) { qb.must(matchQuery(“_all”, unit.getWord()).operator(MatchQueryBuilder.Operator.AND) .fuzziness(Fuzziness.AUTO)); }else { qb.should(termQuery(“_all”, unit.getWord()) .boost(unit.getWeight())); } } for(SearchUnit ExUnit:searchBody.getExcludeBody()){ qb.mustNot(matchPhraseQuery(“_all”,ExUnit.getWord())); } SearchQuery searchQuery = new NativeSearchQueryBuilder() .withIndices(“websites_v1”) .withTypes(“website”) .withQuery(qb) .withMinScore(0.05F)//Magical minscore .withPageable(new PageRequest(page, size)) .build(); Page search = searchRepository.search(searchQuery); return […]

错误:Spring 3.0.3 MVC Portlet + JSON的’ContentNegotiatingViewResolver’

我想使用DispatcherPortlet类生成spring MVC 3.0.3 portlet并支持JSON。 所以,我在spring上下文文件中添加了以下配置。 text / html的 如果没有这个,如果我只使用’InternalResourceViewResolver’那么它运行正常,我可以使用portlet。 但是定义了这个bean后,我在tomcat启动时遇到了以下错误。 我google了一下,找到一个链接,声明这个带有JSON的bean只能在最新的spring vesion中使用servlet。 请检查链接。 http://jira.springframework.org/browse/SPR-7344(portlets的 JSON问题……) http://jira.springframework.org/browse/SPR-6932?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel#issue-tabs 另请检查下面粘贴的错误。 帮帮我……谢谢。 :错误: java.lang.IllegalArgumentException: Object of class [org.springframework.web.portlet.context.PortletRequestAttributes] must be an instance of class org.springframework.web.context.request.ServletRequestAttributes 请检查日志 Caused by: java.lang.IllegalArgumentException: Object of class [org.springframework.web.portlet.context.PortletRequestAttributes] must be an instance of class org.springframework.web.context.request.ServletRequestAttributes at org.springframework.util.Assert.isInstanceOf(Assert.java:337) at org.springframework.util.Assert.isInstanceOf(Assert.java:319) at org.springframework.web.servlet.view.ContentNegotiatingViewResolver.resolveViewName(ContentNegotiatingViewResolver.java:363) at org.springframework.web.portlet.DispatcherPortlet.resolveViewName(DispatcherPortlet.java:1110) at […]

在Spring中如何从“”打印用户名和姓氏

如何从打印用户名和姓 此principal.username仅打印用户ID。 但我想在这里打印用户名和数据库的名字。 可能吗?

如何在Spring Boot中获取DispatcherServeletInitializerfunction

我们希望将项目迁移到Spring Boot。 但是,目前还不清楚如何在Spring Boot中复制AbstractAnnotationConfigDispatcherServletInitializer的function? public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class[] getRootConfigClasses() { return new Class[]{AppConfig.class}; } @Override protected Class[] getServletConfigClasses() { return new Class[]{WebappConfig.class}; } @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { registration.setAsyncSupported(true); } @Override protected String[] getServletMappings() { return new String[]{“/”}; } @Override protected Filter[] getServletFilters() { DelegatingFilterProxy shiroFilter = new DelegatingFilterProxy(“shiroFilter”); […]

如何在Maven多模块Spring Web应用程序中自动挂载类?

我正在开发包含Maven多模块项目的应用程序。 当从另一个模块尝试@Autowire服务类时,我得到java.lang.NoClassDefFoundError:这个项目的独特之处在于两个Web模块之间的依赖关系。 家长项目 的pom.xml com.test.simple-project simple-parent pom module-x module-y org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.5 1.5 模块X. 的pom.xml module-x ${project.groupId} simple-parent war … maven-eclipse-plugin 2.9 org.springframework.ide.eclipse.core.springnature org.springframework.ide.eclipse.core.springbuilder true true org.apache.maven.plugins maven-compiler-plugin 2.5.1 1.6 1.6 -Xlint:all true true org.codehaus.mojo exec-maven-plugin 1.2.1 org.test.int1.Main package com.test.module-x.service; @Service(“userService”) public class UserServiceImpl implements UserService { } 模块Y. 的pom.xml module-y ${project.groupId} simple-parent ${project.version} […]

什么是Spring Framework中的EJB替代方案

我试图学习Spring Framework,之前我曾经用EJB创建应用程序 [Web services]->[Business Layer]->[DAO Layer] | [数据库] 以下方式 WebServices :使用Jersey和url mappings Restful API,支持JSON和XML格式( news/list.json , news/list.xml )。 一旦端点(url-mapped-method)收到请求,它就会通过查找(远程,本地)转发到相关的EJB。 EJB处理每一件事,应用业务规则并将结果作为DTO(数据传输对象)返回,然后Service将结果转换为所需的格式(JSON,XML) 业务层 :在EJB使用remote和local接口实现的业务层(Facade),这些EJB可以调用其他EJB。 WebService层(和/或Timer服务和MDB)也可以调用任何EJB)。 对于与计时器服务相关的function,我使用了EJB Timer Service ,而Message使用了Message Drive Bean和拦截器来进行日志记录和审计。 DAO Layer :所有与数据库相关的函数(添加,编辑,删除,搜索)使用EntityManager编写JPA/Hibernate (实体bean和HQL)。 无缝事务支持,每个EJB的方法(基于查询)调用被视为一个单独的事务,DAO层的调用方法是同一事务的一部分(假设没有提供额外的配置)。 在单个事务中执行多个操作如果一个db操作失败,则所有其他操作将自动回滚。 每个表都映射为具有关系等的实体类。 我曾经在Spring MVC但是无法正确地映射/理解上面的架构我对AOP有点了解并且我认为它是拦截器的完美替代品(或者至少它对我有用) 现在我的问题是如何在Spring框架中替换所有这些 ? 泽西(RestAPi)替代spring> Spring中的EJB替代方案(因为EJB支持远程处理,对方法的每次查找调用都被视为事务,对EJB方法的调用可以被拦截,并且它带有状态完全和无状态的风格)? Spring中的定时服务替代方案? Spring中的Message Drive Bean替代方案? 拦截器替代品是春季的AOP(根据我的经验,这符合我的目的) JPA(实体经理)在春季的替代方案?

为什么不能从ui应用程序读取spring boot angularjs网关应用程序?

我正在使用以下链接中的教程了解spring的可伸缩性function。 具体来说, 本教程的第6部分使用网关应用程序来管理对其他服务器上运行的应用程序的访问。 我已经完全按照以下步骤操作,但是当我启动所有三个应用程序然后在我的网络浏览器中输入localhost:8080/ui ,我得到的是“问候”这个词,没有id或hello world,也没有css。 当我在Firefox中打开请求的开发人员工具时,我看到对css和js资源的GET请求获得404错误,指向http://localhost:8080/js/hello.js 而不是指向http://localhost:8080/ui/js/hello.js ,正如本教程的测试部分所示。 如何更改此设置以便在浏览器中显示问候语? 以下是我一步一步完成的工作,按照教程的第六步,首先从第一部分重新创建ui起点,从第三部分重新创建resource起点: 创建UI示例启动器应用程序 # mkdir ui # chmod -R 777 ui # cd ui # curl https://start.spring.io/starter.tgz -d style=web -d style=security -d name=ui | tar -xzvf – Eclipse>文件>导入>现有Maven项目>导航到ui文件夹>完成 在src/main/resources/static创建index.html并添加以下内容: Hello AngularJS [ng\:cloak], [ng-cloak], .ng-cloak { display: none !important; } Greeting The ID is {{greeting.id}} The content […]

使用JdbcBatchItemWriter更新重复键

spring批量为我的项目,我只是尝试从csv文件读取并将数据加载到数据库,使用JdbcBatchItemWriter作为编写器。 我正在寻找一种方法来告诉编写器插入一个新行,但是,在重复键(或重​​复的唯一标识符)更新行而不是失败。 我知道我可以直接在sql语句中执行此操作,但这将特定于Mysql,但我希望我的代码与DBMS无关。 这是我在java配置中的编写器声明 @Bean @StepScope public ItemWriter writerHeadingCollectionsToDb(DataSource datasource) { String sqlStatement = “INSERT INTO abcd(id, first_name, last_name, phone_number” + “VALUES (:id, :firstName, :lastName, :phoneNumber)”; JdbcBatchItemWriter itemWriter = new JdbcBatchItemWriter(); itemWriter.setSql(sqlStatement ); itemWriter.setDataSource(dataSource); itemWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider()); return itemWriter; } 在此先感谢您的帮助