0

私が書いたメソッド*LocalServiceImplは に見つかりません*LocalServiceUtil。毎回サービスビルダーを再実行しますが、何もしません。メソッドはローカル サーバーでは認識されますが、運用サーバーでは見つかりません。古いメソッドはすべて機能していますが、新しく書かれたメソッドが見つからないだけです。何が問題なのですか?ありがとう。両方のサーバーで Liferay 6.1.1 GA2 を使用しています。

これは私のサービスビルダーのログです

     [echo] Loading jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/system.properties
     [echo] 28.11.2013 08:30:46 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Global shared lib directory /C:/sbl-workspace-1-plugins-sdk/liferay-plugins-sdk-6.1.1/lib/
     [echo] 28.11.2013 08:30:46 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Global lib directory /C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/lib/ext/
     [echo] 28.11.2013 08:30:46 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Portal lib directory /C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/
     [echo] 28.11.2013 08:30:47 com.liferay.portal.kernel.log.Jdk14LogImpl info
     [echo] INFO: Properties for portal loaded from [file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties, jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties, jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties]
     [echo] Loading jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/portal.properties
     [echo] Loading jar:file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/lib/portal-impl.jar!/com/liferay/portal/tools/dependencies/portal-tools.properties
     [echo] Loading file:/C:/sbl-workspace-1/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/webapps/ROOT/WEB-INF/classes/portal-ext.properties
     [echo] Building Menus
     [echo] Building MenusImages
     [echo] Building Sections
    [mkdir] Created dir: C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
    compile-java:
     [copy] Copied 65 empty directories to 65 empty directories under C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
    [javac] Compiling 398 source files to C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
      [zip] Building zip: C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\lib\AdminSBL-portlet-service.jar
      [delete] Deleting directory C:\sbl-workspace-1-plugins-sdk\liferay-plugins-sdk-6.1.1\portlets\AdminSBL-portlet\docroot\WEB-INF\service-classes
      BUILD SUCCESSFUL
      Total time: 37 seconds

解決済み:ヤニキュラーのように機能し、Pankaj Kathiriya は言いました。ありがとう.....

4

4 に答える 4

3

ほとんどの場合、サービス ビルドが失敗しています。最後に正常にビルドされた古い .jar をまだ使用しているため、古いメソッドがまだ表示されます。私のアドバイスは、build-service ログをチェックして、service-build タスクが失敗しているエラーを見つけることです。

編集: ポータル展開メカニズムからの競合、または動的なクラスの読み込みにより、古いサービス jar からクラスが読み込まれることがあります。Web アプリケーションが正当であると確信しているにもかかわらず、展開が失敗した場合、アプリケーションを展開していることを確認するためのフェールセーフ手順は次のとおりです。

  1. ポータルをシャットダウンします
  2. ポータル Web アプリからアプリ フォルダーを削除します。
  3. work/Catalina/localhost からアプリ フォルダーを削除します。
  4. 新しい webapp を /deploy にコピーし、ポータルを開始します。

おまけのヒント: 実行中のリモート ポータルにデプロイする場合は、.war をリモート システムにコピーしてから、/deploy フォルダーに移動すると便利です。それ以外の場合、接続が遅い場合、.war 転送が完了する前に展開が開始される可能性があり、展開は失敗し、Tomcat を再起動するまでアプリはブラックリストに記載されたままになります

于 2013-11-28T07:56:20.653 に答える
0

メソッドの可視性を確認していただけますか: それらは public ですか?

サービス ビルダーは、*LocalServiceImpl のパブリック メソッドに対してのみ *LocalServiceUtil メソッドを作成します。

*LocalServiceImpl メソッドを参照して、何が起こっているのかを理解しようとすると便利です。

于 2013-11-29T08:48:25.000 に答える
0

サービスのビルド時に作成される service.jar を削除する必要があります。ここで再び service.xml をビルドし、メソッドが util クラスの下に入力されることを確認します。

複数のポートレットで共有されている場合は、その .jar ファイルを Tomcat_home\lib\ext の下に置いてみてください。

于 2013-12-01T13:57:52.770 に答える
0

これは古い問題ですが、まだ受け入れられた答えがありません。この質問がこの古い問題に言及したとき、それは私の注意を引きました。他の誰かがそれに出くわした場合に備えて、何がうまくいかなかったのかについての後半の推測があります(他の質問への私の答えから):

まず第一に、ソースコードをチェックし*LocalServiceUtilて、メソッドの実装が本当にないことを確認してください。メソッドがそこにある場合は、他の場所を探す必要があります。場所は次のとおりです。

ポートレットをデプロイすると、複数の方法で API を取得できます。サービスを含むプラグインが Tomcat のグローバル クラス パスにデプロイされている可能性があります。それを更新しないと、更新が表示されない可能性があります。

また、誰かがあなたのプラグインの古いバージョンを自分のプラグインにコピーした可能性もあります。当然、依存関係を更新しない限り、更新は表示されません。jar ファイルの変更された名前も確認します。クラスも確認してください。コンパイル済みの Java クラスをソース ディレクトリに追加して、同じコードの 2 つの異なる実装を作成することを好む人もいます。

于 2015-06-08T11:29:27.000 に答える