Devido a uma mudança na especificação Java™ APIs for XML based Remote Procedure Call (JAX-RPC), aplicativos Enterprise JavaBeans (EJB) que podiam ser agrupados no
WebSphere Application Server Versão 5.1 não podem ser agrupados na
Versão 9.0 a menos que você modifique o código para a manipulação de exceção do aplicativo EJB base.
Sobre Esta Tarefa
A especificação JAX-RPC Versão 1.1 afirma:
uma exceção específica do serviço declarada em uma assinatura de método remoto deve ser uma exceção verificada. Deve estender java.lang.Exception direta ou indiretamente, mas não deve ser uma
RuntimeException.
Não é mais possível usar os tipos
java.lang.Exception ou java.lang.Throwable diretamente. É preciso
modificar os aplicativos utilizando exceções específicas de serviço para respeitar a
especificação.
Procedimento
- Modifique os aplicativos que utilizam exceções específicas de serviço. Por exemplo, digamos que seu EJB existente utiliza uma exceção específica de serviço
denominada UserException. Dentro de UserException há um campo chamado ex que é
do tipo java.lang.Exception. Para agrupar seu aplicativo com sucesso com serviços da web no
WebSphere Application Server Versão 9.0, você deve alterar a classe UserException. Neste exemplo, você poderia modificar UserException para fazer o tipo de ex para ser java.lang.String em vez de
java.lang.Exception.
new UserException class:
package irwwbase;
/**
* Insira a descrição do tipo aqui.
* Data de criação: (25/9/00 14:25:18)
* @author: Administrador
*/
public class UserException extends java.lang.Exception {
private java.lang.String _infostring = null;
private java.lang.String ex;
/**
* Comentário do construtor UserException.
*/
public UserException() {
super();
}
/**
* Comentário do construtor UserException.
*/
public UserException (String infostring)
{
_infostring = infostring;
} // ctor
/**
* Insira a descrição do método aqui.
* Datade criação: (29/11/2001 9:25:50)
* @param msg java.lang.String
* @param ex java.lang.Exception
*/
public UserException(String msg,String t) {
super(msg);
this.setEx(t);
}
/**
* @return
*/
public java.lang.String get_infostring() {
return _infostring;
}
/**
* @return
*/
public java.lang.String getEx() {
return ex;
}
/**
* @param string
*/
public void set_infostring(java.lang.String string) {
_infostring = string;
}
/**
* @param Exception
*/
public void setEx(java.lang.String exception) {
ex = exception;
}
public void printStackTrace(java.io.PrintWriter s) {
System.out.println("the exception is :"+ex);
}
}
- Modifique toda a manipulação de exceções nos beans corporativos que a
utilizam. É preciso assegurar-se de que os enterprise beans estejam codificados para aceitar as nova exceções. Neste exemplo, o código pode ser semelhante ao seguinte:
new EJB exception handling:
try {
if (isDistributed()) itemCMPEntity = itemCMPEntityHome.findByPrimaryKey(ckey);
else itemCMPEntityLocal = itemCMPEntityLocalHome.findByPrimaryKey(ckey);
} catch (Exception ex) {
System.out.println("%%%%% ERROR: getItemInstance - CMPjdbc " + _className);
ex.printStackTrace();
throw new UserException("error on itemCMPEntityHome.findByPrimaryKey(ckey)",ex.getMessage());
}