Sunday 27 July 2014

Debug Weblogic in Eclipse

Вообще то существует Oracle plugin для эклипса, но дело в том что мне он весь ни к чему. А весь он жутко тормозит IDE. Так как все проекты в основном подкреплены скриптами, ведь в любом случае надеяться на IDE как на инструмент который скомпилирует, запакует и развернет проект - нельзя, к сожалению опыт показывает что айдиишки ломаются по самым разным причинам, из за какого нибудь плагина который и нанесет ему урон). Надежную структуру проекту придает скрипт, он дает ему силу, возможность оказывать действие и пользу, как каркас плотно связывающий бесполезные доски корабля. Но если без философии, то вот как можно установить debugging и запуск Weblogic сервера из эклипса.

Запуск
1) Зайдите в созданную папку bin доменa и откройте файл startWebLogic.cmd - это на Windows. Вот этот файл:

C:\Oracle\Middleware\Oracle_Home\user_projects\domains\technokon\bin\startWebLogic.cmd

2) Добавьте туда вот этот кусок:

@REM set debug options
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

Suspend=n означает что Debuger не будет ждать запуска listener с порта 8000.

Вот файл целиком:

@ECHO OFF

@REM WARNING: This file is created by the Configuration Wizard.
@REM Any changes to this script may be lost when adding extensions to this configuration.

SETLOCAL

@REM --- Start Functions ---

GOTO :ENDFUNCTIONS

:stopAll
 @REM We separate the stop commands into a function so we are able to use the trap command in Unix (calling a function) to stop these services
 if NOT "X%ALREADY_STOPPED%"=="X" (
  GOTO :EOF
 )
 @REM STOP DERBY (only if we started it)
 if "%DERBY_FLAG%"=="true" (
  echo Stopping Derby server...
  call "%WL_HOME%\common\derby\bin\stopNetworkServer.cmd"  >"%DOMAIN_HOME%\derbyShutdown.log" 2>&1 

  echo Derby server stopped.
 )

 set ALREADY_STOPPED=true
GOTO :EOF

:classCaching
 echo Class caching enabled...
 set JAVA_OPTIONS=%JAVA_OPTIONS% -Dlaunch.main.class=%SERVER_CLASS% -Dlaunch.class.path="%CLASSPATH%" -Dlaunch.complete=weblogic.store.internal.LockManagerImpl -cp %WL_HOME%\server\lib\pcl2.jar
 set SERVER_CLASS=com.oracle.classloader.launch.Launcher
GOTO :EOF


:ENDFUNCTIONS

@REM --- End Functions ---

@REM *************************************************************************
@REM This script is used to start WebLogic Server for this domain.
@REM 
@REM To create your own start script for your domain, you can initialize the
@REM environment by calling @USERDOMAINHOME\setDomainEnv.
@REM 
@REM setDomainEnv initializes or calls commEnv to initialize the following variables:
@REM 
@REM BEA_HOME       - The BEA home directory of your WebLogic installation.
@REM JAVA_HOME      - Location of the version of Java used to start WebLogic
@REM                  Server.
@REM JAVA_VENDOR    - Vendor of the JVM (i.e. BEA, HP, IBM, Sun, etc.)
@REM PATH           - JDK and WebLogic directories are added to system path.
@REM WEBLOGIC_CLASSPATH
@REM                - Classpath needed to start WebLogic Server.
@REM PATCH_CLASSPATH - Classpath used for patches
@REM PATCH_LIBPATH  - Library path used for patches
@REM PATCH_PATH     - Path used for patches
@REM WEBLOGIC_EXTENSION_DIRS - Extension dirs for WebLogic classpath patch
@REM JAVA_VM        - The java arg specifying the VM to run.  (i.e.
@REM                - server, -hotspot, etc.)
@REM USER_MEM_ARGS  - The variable to override the standard memory arguments
@REM                  passed to java.
@REM PRODUCTION_MODE - The variable that determines whether Weblogic Server is started in production mode.
@REM DERBY_HOME - Derby home directory.
@REM DERBY_CLASSPATH
@REM                - Classpath needed to start Derby.
@REM 
@REM Other variables used in this script include:
@REM SERVER_NAME    - Name of the weblogic server.
@REM JAVA_OPTIONS   - Java command-line options for running the server. (These
@REM                  will be tagged on to the end of the JAVA_VM and
@REM                  MEM_ARGS)
@REM SAVE_MEMORY    - Put server in a mode where it is frugal with memory, potentially sacrificing performance to do so.
@REM CLASS_CACHE    - Enable class caching of system classpath.
@REM PROXY_SETTINGS - These are tagged on to the end of the JAVA_OPTIONS. This variable is deprecated and should not
@REM                  be used. Instead use JAVA_OPTIONS
@REM 
@REM For additional information, refer to "Administering Server Startup and Shutdown for Oracle WebLogic Server"
@REM *************************************************************************

@REM Call setDomainEnv here.

set DOMAIN_HOME=C:\Oracle\Middleware\Oracle_Home\user_projects\domains\technokon
for %%i in ("%DOMAIN_HOME%") do set DOMAIN_HOME=%%~fsi

call "%DOMAIN_HOME%\bin\setDomainEnv.cmd" %*

set SAVE_JAVA_OPTIONS=%JAVA_OPTIONS%

set SAVE_CLASSPATH=%CLASSPATH%

@REM Start Derby

set DERBY_DEBUG_LEVEL=0

if "%DERBY_FLAG%"=="true" (
 call "%WL_HOME%\common\derby\bin\startNetworkServer.cmd"  >"%DOMAIN_HOME%\derby.log" 2>&1 

)

set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%

set SAVE_JAVA_OPTIONS=

set CLASSPATH=%SAVE_CLASSPATH%

set SAVE_CLASSPATH=

if "%PRODUCTION_MODE%"=="true" (
 set WLS_DISPLAY_MODE=Production
) else (
 set WLS_DISPLAY_MODE=Development
)

if NOT "%WLS_USER%"=="" (
 set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.management.username=%WLS_USER%
)

if NOT "%WLS_PW%"=="" (
 set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.management.password=%WLS_PW%
)

if NOT "%MEDREC_WEBLOGIC_CLASSPATH%"=="" (
 if NOT "%CLASSPATH%"=="" (
  set CLASSPATH=%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%
 ) else (
  set CLASSPATH=%MEDREC_WEBLOGIC_CLASSPATH%
 )
)

@REM set debug options
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

echo .

echo .

echo JAVA Memory arguments: %MEM_ARGS%

echo .

echo CLASSPATH=%CLASSPATH%

echo .

echo PATH=%PATH%

echo .

echo ***************************************************

echo *  To start WebLogic Server, use a username and   *

echo *  password assigned to an admin-level user.  For *

echo *  server administration, use the WebLogic Server *

echo *  console at http:\\hostname:port\console        *

echo ***************************************************

@REM SAVE MEMORY

if exist %WL_HOME%\server\bin\saveMemory (
 call "%WL_HOME%\server\bin\saveMemory.cmd"
)

@REM CLASS CACHING

if "%CLASS_CACHE%"=="true" (
 CALL :classCaching
)

@REM START WEBLOGIC

echo starting weblogic with Java version:

%JAVA_HOME%\bin\java %JAVA_VM% -version

if "%WLS_REDIRECT_LOG%"=="" (
 echo Starting WLS with line:
 echo %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %JAVA_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS%
 %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %JAVA_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS%
) else (
 echo Redirecting output from WLS window to %WLS_REDIRECT_LOG%
 %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %JAVA_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS%  >"%WLS_REDIRECT_LOG%" 2>&1 
)

CALL :stopAll

popd

@REM Exit this script only if we have been told to exit.

if "%doExitFlag%"=="true" (
 exit
)



ENDLOCAL

Файл этот используется для запуска сервера. Сохраните файл как нибудь в той-же папке, я свой назвал - startWebLogicInDebug.cmd

3) В эклипсе добавьте External tool configurations, для это-го идите в:

Run -> External Tools -> External Tools Configurations... 

Там создайте 2 конфигурации, для запуска и для стопа:





В Location укажите на файлы для запуска, это вот новый подготовленный файл, и файл для стопа, он в той-же директории.


 Debuggin
В эклипсе зайдите в:

Run -> Debug Configurations... 

А там:


Вот и все. Теперь в начале запускаем сервер, потом Debug. В Debug, в табе Source, вы можете указать проекты по которым желаете пройтись во время работы сервера.  

No comments:

Post a Comment