# Introduction # Shakespeare would ask: **to generate async remote service or not to generate async remote service**? Our answer is: definetelly generated them! It allows you to keep these two files (remote service and async remote service) in the **sync** (maybe you have had a hard times with GWT compilation and knows perfectly this kind of error message: **Missing asynchronous version of the synchronous method**). Thanks to eclipse annotation processing support it is perfectly integrated with your IDE and async remote service is automatically regenerated after each change in the remote service). **The ones who does not use/like maven - we are supporting only maven configuration - if you can provide configuration for other project management tools, please let us know.** ## Maven configuration ## * Add following dependency to your pom.xml ``` sk.seges.acris acris-async-service-processor provided 1.2.0 ``` * create .pap file in your project in order to enable annotation processors ## Execution ## When your remote service is annotated with one of the following annotation, async version is automatically generated by the async plugable annotation processor: * com.google.gwt.user.client.rpc.RemoteServiceRelativePath * sk.seges.acris.core.client.annotation.RemoteServicePath * sk.seges.sesam.pap.service.annotation.RemoteServiceDefinition ## Example ## Remote service: ``` @RemoteServiceRelativePath("/service") public interface GWTContentAdministrationServiceRemote extends RemoteService { PagedResult> findAll(Page page); ContentDTO merge(ContentDTO content); void remove(ContentDTO content); } ``` Generated async version: ``` @Generated(value = "sk.seges.acris.pap.service.AsyncServiceProcessor") public interface GWTContentAdministrationServiceRemoteAsync { void findAll(Page page, AsyncCallback>> callback); void merge(ContentDTO content, AsyncCallback callback); void remove(ContentDTO content, AsyncCallback callback); } ```