Apache CXF wsdl2java - кириллица в пути wsdl
От: Аноним  
Дата: 10.10.11 13:50
Оценка:
Привет. Пытаюсь сгенерировать java-классы по wsdl. Wsdl сохранен локально, причем абсолютный путь файла содержит символы кириллицы (например, c:\ц\wsdl.wsdl), возникает следующая проблема:

c:\ц>wsdl2java wsdl.wsdl

10.10.2011 17:37:54 org.apache.cxf.binding.corba.CorbaConduit prepare
SEVERE: Could not resolve target object
10.10.2011 17:37:54 org.apache.cxf.binding.corba.CorbaConduit prepare
SEVERE: Could not resolve target object

WSDLToJava Error: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsd
l definition from : file:/c:/%d861/wsdl.wsdl
Caused by : null


Может, кто-нибудь знает, почему так происходит? И существует ли способ загрузить wsdl в такой ситуации (не гарантируя отсутствие неугодных символов в пути файла)?

apache cxf 2.4.2
win 7
Re: Apache CXF wsdl2java - кириллица в пути wsdl
От: milkpot Россия  
Дата: 10.10.11 14:41
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет. Пытаюсь сгенерировать java-классы по wsdl. Wsdl сохранен локально, причем абсолютный путь файла содержит символы кириллицы (например, c:\ц\wsdl.wsdl), возникает следующая проблема:


А>
А>c:\ц>wsdl2java wsdl.wsdl

А>10.10.2011 17:37:54 org.apache.cxf.binding.corba.CorbaConduit prepare
А>SEVERE: Could not resolve target object
А>10.10.2011 17:37:54 org.apache.cxf.binding.corba.CorbaConduit prepare
А>SEVERE: Could not resolve target object

А>WSDLToJava Error: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsd
А>l definition from : file:/c:/%d861/wsdl.wsdl
А>Caused by : null
А>


А>Может, кто-нибудь знает, почему так происходит? И существует ли способ загрузить wsdl в такой ситуации (не гарантируя отсутствие неугодных символов в пути файла)?


А>apache cxf 2.4.2

А>win 7


Может стоит генерацию производить посредством *.cmd файлов. Сам *.cmd предварительно надо преобразовать в кодировку 866 (пусть эта кодировка сеанса ms-dos).
Re: Apache CXF wsdl2java - кириллица в пути wsdl
От: Blazkowicz Россия  
Дата: 10.10.11 15:13
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Может, кто-нибудь знает, почему так происходит? И существует ли способ загрузить wsdl в такой ситуации (не гарантируя отсутствие неугодных символов в пути файла)?

Скачать исходники и подебажить. Во-первых он зачем-то прогнал его через URLEncode. Во-вторых получится очень странный код %d861. Это никак не ц даже в Unicode.
Ну и в третих он почему-то упал с NPE вместо внятного исключения. Велкам, как говорится, в опенсорс.
Re[2]: Apache CXF wsdl2java - кириллица в пути wsdl
От: Аноним  
Дата: 10.10.11 18:27
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Аноним, Вы писали:



А>>Может, кто-нибудь знает, почему так происходит? И существует ли способ загрузить wsdl в такой ситуации (не гарантируя отсутствие неугодных символов в пути файла)?

B>Скачать исходники и подебажить. Во-первых он зачем-то прогнал его через URLEncode. Во-вторых получится очень странный код %d861. Это никак не ц даже в Unicode.
B>Ну и в третих он почему-то упал с NPE вместо внятного исключения. Велкам, как говорится, в опенсорс.

Символы кодируются следующим образом:

            char ch = b.charAt(x);
            if (isExcluded(ch)) {
                try {
                    byte[] bytes = Character.toString(ch).getBytes("UTF-8");
                    b.setCharAt(x++, '%');
                    for (int y = 0; y < bytes.length; y++) {
                        b.insert(x++, HEX_DIGITS.charAt((bytes[y] & 0xFF) >> 4));
                        b.insert(x, HEX_DIGITS.charAt(bytes[y] & 0x0F));
                    }
                } catch (UnsupportedEncodingException e) {
                    //should not happen
                }


Резолверы ресурсов в CXF вроде бы расширяемы, так что проблема устраняется написанием своего собственного резолвера, выполняющего обратное преобразование. Но непонятно, в чем смысл такого кодирования?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.