Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Axis2 генерация Web Services


Автор: rrrookie 8.11.2006, 17:09
Привет!
у меня не простая ситуация с Axis2

Когда пытаюсь запускать WSDL2Java.bat файл чтобы генерить
Web Services,  запускю такой 
Код

WSDL2Java -uri ..\samples\wsdl\Axis2SampleDocLit.wsdl -ss -sd -d xmlbeans -o ..\samples -p org.apache.axis2.userguide
  командой.

 Вылетает следующий WARNING 

Код


log4j:WARN No appenders could be found for logger (org.apache.axis2.wsdl.codegen
.emitter.AxisServiceBasedMultiLanguageEmitter).
log4j:WARN Please initialize the log4j system properly. 



Ктонить подскажет в чем дело? 

P.S http://ws.apache.org/axis2/1_0/userguide2.html#Writing_Web_Services_by_Code_Generating_Skeleton


Автор: powerOn 8.11.2006, 17:32
Цитата(rrrookie @  8.11.2006,  17:09 Найти цитируемый пост)
 Вылетает следующий WARNING 

Это всего лишь предупреждение, а не ошибка. WARING - не ERROR. Да и к тому же это Log4j буянит... мол appenders-ы для него не найдены... 
Не думаю, что это на что-то сильно повлияет.  

Автор: tux 8.11.2006, 17:33
Если таки предупреждение мешает, создай файл log4j.properties с, например, таким содержанием:
Код

log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Теперь положи его либо в корень CLASS-PATH либо при запуске укажи системный параметр -Dlog4j.configuration=<путь_к_файлу>.

Автор: rrrookie 8.11.2006, 17:40
Такс... Ребята, цпасибо за активноцтЬ


1) Веб сервисы генерятся из WSDL фаила....


Всё  что у меня естЬ, ето WSDL  + ахис библиотеки, с помосчю которых генерируются веб сервисы...

Куда же мне ето -> пихатЬ? 

Код


log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n



После генерации нехватает многих классов - думаю WARNING  мешает...

Добавлено @ 17:42 
Tux - спасибо!

Попробую! ;)

Автор: rrrookie 8.11.2006, 18:14
Tux, вот такой вариант запуска -> 

WSDL2Java  -uri ..\samples\wsdl\Axis2SampleDocLit.wsdl log4j.proper
ties -ss -sd -d xmlbeans -o ..\samples -p org.apache.axis2.userguide

не помогает...

Вилетает тот же  WARNING...

"
log4j:WARN No appenders could be found for logger (org.apache.axis2.wsdl.codegen
.emitter.AxisServiceBasedMultiLanguageEmitter).
log4j:WARN Please initialize the log4j system properly. 

"

В чем дело?

Автор: tux 8.11.2006, 18:28
Не понял. Чего поменялось-то? Где "-Dlog4j.configuration=<путь_к_файлу>"? К тому же это параметр, с которым надо JVM запускать. Отредактируй wsdl2java.bat. Третья снизу строка должна быть похожа вот на такое:
Код

%_RUNJAVA% %JAVA_OPTS% -Dlog4j.configuration=<путь_к_файлу> -cp "%AXIS2_CLASS_PATH%" org.apache.axis2.wsdl.WSDL2Java %*

Автор: rrrookie 8.11.2006, 18:30
момент

Добавлено @ 18:36 
Вот содержимое WSDL2Java.bat файла -> 

Цитата


@echo off
rem ---------------------------------------------------------------------------
rem Startup script for the WSDLJava
rem
rem Environment Variable Prequisites
rem
rem   AXIS2_HOME      Must point at your AXIS2 directory 
rem
rem   JAVA_HOME       Must point at your Java Development Kit installation.
rem
rem   JAVA_OPTS       (Optional) Java runtime options 
rem ---------------------------------------------------------------------------
set CURRENT_DIR=%cd%

rem Make sure prerequisite environment variables are set
if not "%JAVA_HOME%" == "" goto gotJavaHome
echo The JAVA_HOME environment variable is not defined
echo This environment variable is needed to run this program
goto end
:gotJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
goto okJavaHome
:noJavaHome
echo The JAVA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
echo NB: JAVA_HOME should point to a JDK/JRE
goto end
:okJavaHome

rem check the AXIS2_HOME environment variable
if not "%AXIS2_HOME%" == "" goto gotHome
set AXIS2_HOME=%CURRENT_DIR%
if exist "%AXIS2_HOME%\bin\start.bat" goto okHome

rem guess the home. Jump one directory up to check if that is the home
cd ..
set AXIS2_HOME=%cd%
cd %CURRENT_DIR%

:gotHome
if EXIST "%AXIS2_HOME%\lib\axis2*.jar" goto okHome
echo The AXIS2_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end

:okHome
rem set the classes
setlocal EnableDelayedExpansion
rem loop through the libs and add them to the class path
set AXIS2_CLASS_PATH=%AXIS2_HOME%


FOR %%c in ("%AXIS2_HOME%\lib\*.jar") DO set AXIS2_CLASS_PATH=!AXIS2_CLASS_PATH!;%%c


rem ----- Execute The Requested Command ---------------------------------------
echo Using AXIS2_HOME:       %AXIS2_HOME%
echo Using JAVA_HOME:        %JAVA_HOME%
    
set _RUNJAVA="%JAVA_HOME%\bin\java"

%_RUNJAVA% %JAVA_OPTS% -Dlog4j.configuration=C:\axis2\bin -cp "%AXIS2_CLASS_PATH%" org.apache.axis2.wsdl.WSDL2Java %*

endlocal
:end

PAUSE




в C:\axis2\bin находится  файл  log4j.properties

Но при запуске бат фаила тот же же  WARNING

Я что то не так сделал?

Автор: tux 8.11.2006, 20:07
-Dlog4j.configuration=C:\axis2\bin\log4j.properties

Автор: rrrookie 9.11.2006, 10:30
К сожалению ето не помогло... Резултат тот же  smile 

ЕстЬ идеи в чем всё таки дело?

Автор: tux 9.11.2006, 10:37
Дело в том, что log4j не может найти файл конфигурации. Если все правильно указано, то должен найти. Если положить log4j.properties в корень CLASS-PATH, то тоже должен найти. Ну попробуй вместо -Dlog4j.configuration задать ключ -Dlog4j.defaultInitOverride=true, тогда он просто не будет инициализироваться. В любом случае проблему генерации классов это не решит - увидишь лог Axis в лучшем случае и все.

Автор: rrrookie 9.11.2006, 10:43
ок, сейчас попробую....

Но как в конце концов сгенеритй ети веб сервисы исполЬзыя ето ***** Ахис2?!

Не понимаю

Скачал его тут -> http://ws.apache.org/axis2/download/1_0/download.cgi
Устанавливал так -> http://ws.apache.org/axis2/1_0/installationguide.html

Запускаю так -> http://ws.apache.org/axis2/1_0/userguide2.html#Writing_Web_Services_by_Code_Generating_Skeleton

В чем же дело?!?!?

Другое дело Oracle веб сервисы  JDeveloper + Oracle Application Server (oc4j).... ЖалЬ что
На Томкате они не работают...

Добавлено @ 10:46 
Я не уверен что сервисы на генерятся именно из за етого же  WARNING

Цитата

log4j:WARN No appenders could be found for logger (org.apache.axis2.wsdl.codegen
.emitter.AxisServiceBasedMultiLanguageEmitter).
log4j:WARN Please initialize the log4j system properly. 


Но кроме етого все выглядит ОК!!!

Автор: rrrookie 13.11.2006, 13:00
Спасибо всем за помосч - проблема решена - если что  обрасчяйтесь ;)

У меня появился есчо один вопрос по теме...

ЕстЬ ли стандартизированный веб интерфеис у  АXIS2  Web Services? 

Спасибо 

Автор: tux 13.11.2006, 13:03
Цитата(rrrookie @  13.11.2006,  13:00 Найти цитируемый пост)
ЕстЬ ли стандартизированный веб интерфеис у  АXIS2  Web Services? 

Что такое "стандартизированный веб интерфеис"? Объясни.

Автор: rrrookie 13.11.2006, 13:14
Например у Web Services которые генерятсЬя  средствами Oracle 
можно сделатЬ deploy на сервер и запуститЬ их... 

Т.и появляетя список методов которие соодержат данние Web Services...

А как можно запуститЬ Axis2 Web Services мне до сих пор не ясно...
Ну генерутся с ними какой то Client*.jar -  но все методи в нём пустие!!!

П.С если естЬ желание могу на меил прислатЬ Print Screen Oracle WebServices интерфеиса ;)


Автор: tux 13.11.2006, 13:28
Нет ничего такого. Запускается просто - пишешь клиент, который получает ссылку на сервис, используя, например, сгенерированный класс *_ServiceLocator и используешь.

Автор: rrrookie 13.11.2006, 13:31
A где об етом можно почитатЬ?

Что значит "ссылка на сервис" ? 

Значит все таки по http:// тоже можно обратится к сервисам....

Автор: tux 13.11.2006, 13:34
Цитата(rrrookie @  13.11.2006,  13:31 Найти цитируемый пост)
Что значит "ссылка на сервис" ? 

Это значит "ссылка на объект, реализующий интерфейс сервиса".

Цитата(rrrookie @  13.11.2006,  13:31 Найти цитируемый пост)
Значит все таки по http:// тоже можно обратится к сервисам.... 

Естественно, можно получить WSDL-описатель сервиса. И сами вызовы и возврат результата работают как правило по HTTP.

Автор: rrrookie 15.11.2006, 13:57
У меня опять вопрос по субй...

У меня готовые Web Services. Как написать клиента?

Что для етого нужно? 
Когда генерировал Web Services указывал чтобы генерился так же клиент... 


Что именно является клиентом?

Есть фаил "<Web_Services_name>Stub.java" - похоже ето он. Но не удаётся запусть...

Если кто то работал с Ахис2 Web Services - подскажите плз  smile 

Автор: tux 15.11.2006, 14:09
Должен быть сгенерированный класс с именем *ServiceLocator. У него одним из методов get...() можно получить объект, реализующий интерфейс сервиса, и его использовать. Но это не кошерный путь - вся информация о сервисе тогда жестко зашита в коде, но для тестирования пойдет.

Автор: rrrookie 15.11.2006, 14:28
Нет такого класса... 
Есть -> DemoWebServiceStub.java 

Где -> DemoWebService = название веб сервисов


Сорежимое фаила -> 
 

не все... 
Код



/**
 * DemoWebServiceStub.java This file was auto-generated from WSDL by the Apache
 * Axis2 version: 1.0 May 04, 2006 (09:21:04 IST)
 */
package lv.mebius.ws;


/*
*  DemoWebServiceStub java implementation
*/
public class DemoWebServiceStub extends org.apache.axis2.client.Stub {
    //default axis home being null forces the system to pick up the mars from the axis2 library
    public static final java.lang.String AXIS2_HOME = null;
    protected static org.apache.axis2.description.AxisOperation[] _operations;

    //hashmaps to keep the fault mapping
    private java.util.HashMap faultExeptionNameMap = new java.util.HashMap();
    private java.util.HashMap faultExeptionClassNameMap = new java.util.HashMap();
    private java.util.HashMap faultMessageMap = new java.util.HashMap();
    private javax.xml.namespace.QName[] opNameArray = null;

    public DemoWebServiceStub(
        org.apache.axis2.context.ConfigurationContext configurationContext,
        java.lang.String targetEndpoint) throws java.lang.Exception {
        //To populate AxisService
        populateAxisService();
        populateFaults();

        _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext,
                _service);
        _serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(
                targetEndpoint));
    }

    /**
     * Default Constructor
     */
    public DemoWebServiceStub() throws java.lang.Exception {
        this("http://localhost/WSTest/Service1.asmx");
    }

    /**
     * Constructor taking the target endpoint
     */
    public DemoWebServiceStub(java.lang.String targetEndpoint)
        throws java.lang.Exception {
        this(org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(
                AXIS2_HOME, null), targetEndpoint);
    }

  

   
}


Автор: tux 15.11.2006, 15:09
Эк оказывается как в Axis 2 все изменилось в сравнении с Axis 1. Процесс разработки клиента описан http://ws.apache.org/axis2/1_1/userguide.html и http://ws.apache.org/axis2/1_1/dii.html.

Автор: rrrookie 16.11.2006, 16:08
Огромное спасибо tux!!! :-) 
Линки что Ты прислал просто золото. (странно почему ети страницы гугл не нашел...)

Я  тут в 2ым темпом пытаюсь разобратся таки с етим Axis2...

У кого нить есть опыт работы с ним? Успешный опыт... smile

Помоему он просто гльучный!!!

Добавлено @ 16:08 
Я не просто так болтаю - могу обосновать!!!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)