Requisição via applet Webphere 8.5

3 respostas
D

Boa Tarde.

Estou tendo um problema no servidor websphere 8.5,onde não estou conseguindo fazer uma requisição para uma action(Struts 1.3).

O engraçado que ao rodar no websphere 6.1 funciona normalmente.

No console da applet da esta exceção.

java.lang.RuntimeException: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9081/Projeto/impressora.do
	at br.com.stefanini.projeto.applet.http.WebTarget.postReturnByteArray(WebTarget.java:75)
	at br.com.stefanini.projeto.applet.http.WebTarget.postReturnString(WebTarget.java:33)
	at br.com.stefanini.projeto.applet.http.BasePrinterHttpApplet.retriveSavedConfiguredPrinter(BasePrinterHttpApplet.java:36)
	at br.com.stefanini.projeto.applet.printer.PrinterConfigurationApplet.configurePrinters(PrinterConfigurationApplet.java:105)
	at br.com.stefanini.projeto.applet.printer.PrinterConfigurationApplet.init(PrinterConfigurationApplet.java:74)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:9081/Projeto/impressora.do
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at br.com.stefanini.projeto.applet.http.WebTarget.postReturnByteArray(WebTarget.java:61)
	... 6 more

E no console do servidor joga essa exceção

Caused by: java.lang.NoSuchMethodException: Action[/login] does not contain specified method (check logs)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:261)
	at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	... 51 more
[15/03/13 12:07:51:021 BRT] 00000086 DispatchActio E org.apache.struts.actions.DispatchAction dispatchMethod Action[/login] does not contain method named 'verificarImpressorasConfiguradas'

não sei por qual motivos a applet não faz a requisição para

http://localhost:9080/Projeto/impressora.do?acao=verificarImpressorasConfiguradas

mas sim para a action welcome-file do web.xml login.do

esse é o trecho que a applet faz a requisição.

HttpURLConnection connection = null;
		try {
			String postParametersData = getPostParametersData();
			URL url = new URL(uri); 
			connection = (HttpURLConnection) url.openConnection();           
			connection.setDoOutput(true);
			connection.setDoInput(true);
			connection.setInstanceFollowRedirects(false); 
			connection.setRequestMethod("POST"); 
			connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
			connection.setRequestProperty("charset", UTF_8);
			connection.setRequestProperty("Content-Length", "" + Integer.toString(uri.getBytes().length + postParametersData.getBytes().length));
			connection.setUseCaches(false);
			connection.setRequestProperty("Cookie", "JSESSIONID=" + jSessionId);

			DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
			wr.writeBytes(postParametersData);
			wr.flush();
			wr.close();
			InputStream iss = connection.getInputStream();//ACONTECE AQUI A EXCEÇÃO
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
			int c;  
			while ((c = iss.read()) != -1) {  
			      byteArrayOutputStream.write(c);  
			}  
			//ByteArrayInputStream byteArrayInputStream  = null;
			//byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
			byte[] line = byteArrayOutputStream.toByteArray();
			connection.disconnect();
			return line;
		} catch (IOException e) {
			e.printStackTrace();
			e.getMessage();
			throw new RuntimeException(e);
		} finally {
			if (connection != null)
				connection.disconnect();
		}

Alguém sabe o que pode estar acontecendo ?

3 Respostas

joaoorso

Ola dfnfilipe . Estou tendo o mesmo problema ao chamar uma URL de outro projeto.

No meu caso a exceção começou a acontecer na migração do servidor de aplicação do Jboss 5.0 para o GlassFish 3.1.2.

No seu caso, como conseguiu resolver ?

Valeu !
Um abraço.

D

Tudo bom joaoorso ?

Depois de apanhar bastante descobri o problema.

No Websphere 8.5 quando eu usava

Para pegar o id da sessão, ele retornava o valor incompleto, exemplo :

JsessionID =1tl3497zq43g31soq6mn8rggfz:vh3-1
Retornava =1tl3497zq43g31soq6mn8rggfz

Dai qdo fazia a requisição acabava criando uma nova sessão, como eu tenho um listener que verifica se o usuário esta logado, acaba dando esse problema…

Para resolver isso , tive que habilitar no servidor a leitura do cookie de JsessionID e via javacript eu pego o id da sessão completo.

function getCookie(name){//name=JSESSIONID
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	
	//Procura um cookie com o nome informado.
	for(var i=0;i < ca.length;i++)
	{
	     var c = ca[i];
	     while (c.charAt(0)==' ') c = c.substring(1,c.length);
	     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
}

Espero que isso te ajude de alguma forma, não sei se esse é o seu problema também.

Boa Sorte e abraços…

joaoorso

Valeu !
Obrigado.

Criado 15 de março de 2013
Ultima resposta 4 de out. de 2013
Respostas 3
Participantes 2