Bonjour à tous,
Je souhaiterai trouver une solution pour utiliser un web service retournant un volume important de données.
actuellement mon service est à la fois accessible en EJB3 remote et en web service.
J'arrive à récupérer un volume important en remote mais pas en web service
j'obtiens coté serveur l'exception suivante :
java.lang.OutOfMemoryError: Java heap space
J'ai évidement essayé de monter la mémoire de la JVM au maximum mais ça ne change rien.
Voici mon code :
1 2 3 4 5 6
| @Remote
@WebService
public interface IDMService{
@WebMethod
public List<Demand> getDemand(String demandType,String productAggregation);
} |
1 2 3 4 5 6 7 8 9 10 11 12
| @Stateless
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class DMService implements IDMService{
@EJB
private IDemandMeasure dm;
@WebMethod
public List<Demand> getDemand(String demandType,String productAggregation){
return dm.getAllDemand(EDemandType.AFCD);
}
} |
Voici la methode d'appel de l'ejb
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public String getEjb(){
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
env.put(Context.PROVIDER_URL, "jnp://serveur:1099");
IDMService dm = null;
try{
InitialContext ctx = new InitialContext(env);
dm = (IDMService) ctx.lookup("DM-ear/DMService/remote");
}catch(Exception e){
e.printStackTrace();
}
return "FINAL CUSTOMER 0 , CUSTOMER CODE : "+dm.getDemand("","").get(0).getFinalCustomer().getCustomerCode();
} |
Si je génère les classes clientes avec JaxWS pour un client web service j'obtiens l'exception ci dessus. Quelles sont les pistes à explorer pour un volume important de données
Merci d'avance pour votre aide
Leod
Partager