Замена для JAXMServlet? - PullRequest
       14

Замена для JAXMServlet?

1 голос
/ 11 марта 2009

Я поддерживаю приложение, у которого есть классы (написанные в 2005 году), которые расширяют javax.xml.messaging.JAXMServlet . При обновлении до нового сервера приложений, который реализует последние стандарты J2EE, я обнаружил, что JAXMServlet был удален в JWSDP 2.0 (Java Web Services Developer Pack), в соответствии с этот вопрос (и, очевидно, Сам JWSDP был устарел тоже). Код, на который он опирается, не претерпел существенных изменений с момента его написания и является частью существующей производственной системы, в которой этот код уже протестирован и отлажен, поэтому я не хочу переписывать классы с нуля из-за воздействия регрессионного тестирования. .

Есть ли «легкая» замена для этого класса? Хотя у Google есть много примеров использования этого кода (датированного примерно 2003-2004 годами), его замена на удивление молчит. Спасибо.

Ответы [ 2 ]

1 голос
/ 11 марта 2009

Зачем его заменять? Почему бы не найти соответствующие библиотеки и использовать их?

http://java.sun.com/webservices/downloads/previous/webservicespack.jsp

0 голосов
/ 01 декабря 2009

Чтобы ответить на мой собственный вопрос, нашел код замены на http://www.java.happycodings.com/Java%5fUtil%5fPackage/code23.html:

import java.io.ByteArrayInputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.StringTokenizer;
import javax.activation.DataHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.soap.AttachmentPart;
import javax.xml.soap.MimeHeader;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;

public class SaajUtils {
    /**
    * extract the MIME header information from within the HTTP Request
    * @param req the http request
    * @return MimeHeaders as defined within the SAAJ API
    */
    public static MimeHeaders getHeaders( HttpServletRequest req ) {
      Enumeration<String> en = req.getHeaderNames();
      MimeHeaders headers = new MimeHeaders();

      while( en.hasMoreElements() ) {
        String headerName = (String) en.nextElement();
        String headerValue = req.getHeader( headerName );

        StringTokenizer values = new StringTokenizer( headerValue, "," );
        while( values.hasMoreTokens() ) {
          headers.addHeader( headerName, values.nextToken().trim() );
        }
      }
      return headers;
    }

    /**
     * stuff the MIME headers into the HTTP response
     * @param headers the SAAJ MIME headers
     * @param res the Http servlet response
     */
    public static void putHeaders( MimeHeaders headers, HttpServletResponse res ) {
        for( Iterator<MimeHeader> it = headers.getAllHeaders(); it.hasNext(); ) {
          MimeHeader header = it.next();
          String[] values = headers.getHeader( header.getName() );
          if( values.length == 1 ) {
            res.setHeader( header.getName(), header.getValue() );
          }
          else {
            StringBuffer concat = new StringBuffer();
            for( int i = 0; i < values.length; i++ ) {
              if( i != 0 ) {
                concat.append( ',' );
              }
              concat.append( values[i] );
          }
          res.setHeader( header.getName(), concat.toString() );
        }
      }
    }

    public static void attachBytes( SOAPMessage soapMessage, byte[] theBytes, String contentType )
    throws SOAPException {
      AttachmentPart attachment = soapMessage.createAttachmentPart();
      attachment.setContent( new ByteArrayInputStream( theBytes ), contentType );
      soapMessage.addAttachmentPart( attachment );
    }

    public static void attachUrlContents( SOAPMessage soapMessage, String urlLocation, String contentType )
    throws SOAPException, MalformedURLException {
      URL url = new URL( urlLocation );
      AttachmentPart attachment = soapMessage.createAttachmentPart( new DataHandler( url ) );
      attachment.setContentType( contentType );
      soapMessage.addAttachmentPart( attachment );
    }

    public static String getAttachmentReport( SOAPMessage soapMessage ) throws SOAPException {
      int numOfAttachments = soapMessage.countAttachments();
      Iterator<AttachmentPart> attachments = soapMessage.getAttachments();

      StringBuffer buf = new StringBuffer( "Number of attachments: " );
      buf.append( numOfAttachments );

      while( attachments.hasNext() ) {
        buf.append( "\n--------------------------------------------\n" );
        AttachmentPart attachment = attachments.next();
        buf.append( "\nContent Location: " + attachment.getContentLocation() );
        buf.append( "\nContent Id: " + attachment.getContentId() );
        buf.append( "\nContent Size: " + attachment.getSize() );
        buf.append( "\nContent Type: " + attachment.getContentType() );
      }

      return buf.toString();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...