#java #build #ant #weblogic #webmethod
#Ява #строить #муравей #блог #веб-метод
Вопрос:
Извините, я новичок в Веблогике .Похоже, у меня проблемы с jwsc.Я хочу вернуть ResponseObject, но, похоже, это проблема. пожалуйста, помогите мне.
Я получаю следующую ошибку.
appinf-deploy: [ear] Building ear: C:ICF_AutoCapsule_disabled0.pWebserviceWebserviceAearsA.ear create: [echo] wsdl より webservice 用テンプレートソースを作成します。 build: [echo] ビルド処理を行います。 compile: [echo] ソースファイルをコンパイルします。 [javac] Compiling 7 source files to C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceD002Serviceclasses Warning: Reference webservice.lib.path has not been set at runtime, but was found during build file parsing, attempting to resolve. Future versions of Ant may support referencing ids defined in non-executed targets. [javac] 注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。 [javac] 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。 generate.service: [echo] C:/ICF_AutoCapsule_disabled/00.project/Webservice/Webservice/A/ears [jwsc] JWS: processing module /jp/co/project/d002/D002ServiceImpl [jwsc] Parsing source files [jwsc] Parsing source files [jwsc] 1 JWS files being processed for module /jp/co/project/d002/D002ServiceImpl [jwsc] [JAM] Warning: failed to resolve class ResponseData [jwsc] [JAM] Warning: failed to resolve class RequestData [jwsc] C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceImplementationServicesrcjpcoprojectd002D002ServiceImpl.java 70:25 [jwsc] [WARNING] - メソッドsendの戻り値に使用されているタイプResponseDataはデフォルト・コンストラクタを持たないため、XMLにバインドできない可能性があります。 [jwsc] C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceImplementationServicesrcjpcoprojectd002D002ServiceImpl.java 70:25 [jwsc] [WARNING] - メソッドsendのパラメータrequestObjectに使用されているタイプRequestDataはデフォルト・コンストラクタを持たないため、XMLにバインドできない可能性があります。 [jwsc] C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceImplementationServicesrcjpcoprojectd002D002ServiceImpl.java 131:25 [jwsc] [WARNING] - メソッドinitの戻り値に使用されているタイプResponseDataはデフォルト・コンストラクタを持たないため、XMLにバインドできない可能性があります。 [jwsc] JWS: C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceImplementationServicesrcjpcoprojectd002D002ServiceImpl.java Validated. [jwsc] [SEVERE] Could not resolve class: RequestData [jwsc] [SEVERE] Could not resolve class: ResponseData [jwsc] [SEVERE] initialization errors encountered, skipping compilation [jwsc] weblogic.wsee.bind.buildtime.BindingException: Could not resolve class: RequestData [jwsc] Could not resolve class: ResponseData [jwsc] initialization errors encountered, skipping compilation [AntUtil.deleteDir] Deleting directory C:Users11A632~1AppDataLocalTemp_2huhcl BUILD FAILED C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceAbuild.xml:216: The following error occurred while executing this line: C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceAbuild.xml:1599: The following error occurred while executing this line: C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceAbuild.xml:1642: weblogic.wsee.tools.jws.build.CompileException: Error compiling web service: C:ICF_AutoCapsule_disabled0.projectWebserviceWebserviceImplementationServicesrcjpcoprojectd002D002ServiceImpl.java
Мой Исходный Код
BUILD.XML
lt;target name="generate.service"gt; lt;taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" classpath="C:/ICF_AutoCapsule_disabled/oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar" /gt; lt;jwsc srcdir="..ImplementationServicesrc" destdir="${workspace.directory}/${project.A}/${ear.directory}" gt; lt;jws file="jpcoprojectd002D002ServiceImpl.java" gt; lt;/jwsgt; lt;/jwscgt; lt;echo message="ear ファイルを生成もしくは既に存在する ear へサービスコンポーネントを追加します。"/gt; lt;/targetgt;
D002ServiceImp.java :
package jp.co.project.d002; import javax.jws.WebMethod; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import jp.co.project.common.ForwardResponseBuilder; import jp.co.project.common.SystemErrorResponseBuilder; import jp.co.project.util.MessageKeys; import jp.co.project.util.PropertyKeys; import jp.co.project.webservice.FactoryFinder; import jp.co.project.webservice.binding.ValueHolder; import jp.co.project.webservice.exception.SystemException; import jp.co.project.webservice.exception.SystemExceptionManager; import jp.co.project.webservice.resource.Resource; //WebLogic 固有のアノテーションをインポートする import jp.co.project.webservice.resource.message.MessageResourceFactory; import jp.co.project.webservice.response.ResponseBuilder; import jp.co.project.webservice.response.ResponseDirector; import jp.co.project.webservice.response.ResponseDirectorFactory; import jp.co.project.webservice.utils.Debug; import jp.co.project.webservice.utils.FactoryNames; import weblogic.jws.WLHttpTransport; //クラスレベルのアノテーション @WebService(name="A", serviceName="D002Service", targetNamespace="http://example.org") @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED) @WLHttpTransport(contextPath="A", serviceUri="D002",portName="8080") public class D002ServiceImpl implements D002Service { @WebMethod() public ResponseData send(RequestData requestObject) throws java.rmi.RemoteException { Debug.begin(); ResponseBuilder builder = null; try { if (!requestObject.getTrncd().equalsIgnoreCase(D002.SELF_ID)) { MessageResourceFactory messages = (MessageResourceFactory) FactoryFinder.getFactory(FactoryNames.MessageResourceFactory); Resource message = messages.getResource(); throw new IllegalAccessException(message.getString(MessageKeys.ILLEGALACCESS_ERROR)); } // 1. RequestData を ValueHolder として値を保持する。 ValueHolder inputHolder = ValueHolder.parse(requestObject.getTrncd().toUpperCase(), requestObject); if(!requestObject.getCrtid().equalsIgnoreCase("PF04")) inputHolder.checkSessionTimeout(); // 2. WTC を実行し処理結果を取得する。 D002BusinessDelegator delegator = new D002BusinessDelegator(); ValueHolder outputHolder = delegator.invoke(inputHolder); String id = (String) outputHolder.getValue(PropertyKeys.VIEW_ID); if (id.equalsIgnoreCase(D002.SELF_ID)) { builder = new D002ResponseBuilder(outputHolder); } else { // 他画面に遷移するということは、D002 で使用していたデータが必要なくなるということ。 // その為、Sessionに保存していた D002 のデータはここで消去します。 ValueHolder holder = ValueHolder.newInstance(D002.SELF_ID); holder.remove(); builder = new ForwardResponseBuilder(outputHolder, new ResponseDataCodec()); } } catch (SystemException e) { Debug.abort(); SystemExceptionManager.unthrowSystemException(e); builder = new SystemErrorResponseBuilder(new ResponseDataCodec(), e.getMessageKey(MessageKeys.SYSTEM_ERROR)); } catch (Exception e) { Debug.abort(); SystemExceptionManager.unthrowSystemException(e); builder = new SystemErrorResponseBuilder(new ResponseDataCodec(), MessageKeys.UNKNOWN_ERROR); } // 3. Builder パターンを用いて ResponseData を作成する。 ResponseDirectorFactory directorFactory = (ResponseDirectorFactory) FactoryFinder.getFactory(FactoryNames.ResponseDirectorFactory); ResponseDirector director = directorFactory.getResponseDirector(); ResponseData responseObject = (ResponseData) director.buildResponseObject(builder); Debug.finish(); return responseObject; } /** * lt;DLgt; * lt;DTgt;lt;Bgt;メソッド概要: lt;/Bgt;lt;/DTgt; * lt;DDgt;初期化サービスを実行します。lt;BRgt; * WebServiceSession より取得した値で、ResponseData の初期化を行います。 * lt;/DDgt; * lt;BRgt; * lt;/DLgt; * * @@return ResponseData レスポンス情報 * @@throws java.rmi.RemoteException */ @WebMethod() public ResponseData init() throws java.rmi.RemoteException { Debug.begin(); ResponseBuilder builder = null; try { ValueHolder inputHolder = ValueHolder.restore(D002.SELF_ID); builder = new D002ResponseBuilder(inputHolder); } catch (Exception e) { Debug.abort(); SystemExceptionManager.unthrowSystemException(e); builder = new SystemErrorResponseBuilder(new ResponseDataCodec(), MessageKeys.UNKNOWN_ERROR); } ResponseDirectorFactory directorFactory = (ResponseDirectorFactory) FactoryFinder.getFactory(FactoryNames.ResponseDirectorFactory); ResponseDirector director = directorFactory.getResponseDirector(); ResponseData responseObject = (ResponseData) director.buildResponseObject(builder); Debug.finish(); return responseObject; } }
Я использую java версии «1.6.0_29» , Apache Ant версии 1.7.1 , Weblogic 11G (10.3.6)