2012-03-08 6 views
0

Glassfish 3.1.1でLiferay 6.1 CEを実行しています。Liferay Webサービスを使用する外部アプリケーションを取得するにはどうすればよいですか?

LiferayがWebサービス経由でAPIを公開していることは間違いありません。 Liferayのこの機能を使用したいと考えています.Liferay(私たちの場合は、私たちの販売提案アプリケーション)に外部のアプリケーションがあり、ポータルユーザを作成したいと考えています。 私はオンラインで見つけることができるすべてを試しましたが、それでも有効なリクエストを受け取ることができません。 単純なユースケースとして、私はgetUserByEmailAddressサービスを消費しようと試み始めましたが、私はその仕事を得ることさえできません。私が来たと感じている最も近いhttp://localhost:8080/api/secure/axis/Portal_UserServiceを照会し、

java.rmi.RemoteExceptionを取得することです:いいえユーザーがキー{企業ID = 12098、[email protected]}

に存在しません存在しないユーザーの場合は

です。この応答有効であり、かつ

java.rmi.RemoteExceptionを取得:PermissionCheckerが実際に存在するユーザーのために

を初期化されていません。 SOAP要求をsoapUIまたはJUnitコードで実行しているかどうかにかかわらず、私は同じ応答を得ます。

私は適切なエントリ持っている私のportal-ext.propertiesを変更した(?):

#for web service access 
axis.servlets.hosts.allowed=127.0.0.1,SERVER_IP,localhost,XXX.XXX.XXX.XXX 
axis.servlet.https.required=false 

(XXX.XXX ...が、私のマシンの実際のIPアドレスである) との関連部分を私のコード:

UserAdmin.java

... 
static UserServiceSoap proxy = null; 

public UserAdmin() { 
    try { 
     proxy = PortalProxy.getProxy(); 
    } catch (MalformedURLException e) { 
     logger.error("Malformed URL encountered when generating proxy in UserAdmin constructor"); 
     e.printStackTrace(); 
    } catch (ServiceException e) { 
     logger.error("Service Exception encountered when generating proxy in UserAdmin constructor"); 
     e.printStackTrace(); 
    } 
} 

public UserSoap getUser(long companyId, String emailAddress) { 
    UserSoap requestedUser = null; 
    String possibleError = null; 

    //if proxy hasn't been created yet, create it now. 
    checkProxyConnection(); 
    try { 
     requestedUser = proxy.getUserByEmailAddress(companyId, emailAddress); 
     logger.debug("Found user for "+emailAddress); 
    } catch (RemoteException e) { 
     requestedUser = null; 
     possibleError = e.getMessage(); 
    } 
    if(requestedUser != null) { 
     logger.info("Returning requested user: " + requestedUser.getEmailAddress()); 
    } else { 
     logger.info("Requested user for email address \""+emailAddress+"\" not found. Returning null."); 
     logger.info(possibleError); 
    } 
    return requestedUser; 
} 

... 

PortalProxy.java

... 
    public static UserServiceSoap getProxy() 
     throws MalformedURLException, ServiceException { 

    UserServiceSoapServiceLocator svc = new UserServiceSoapServiceLocator(); 
    UserServiceSoap userSoap = svc.getPortal_UserService(new URL("http://localhost:8080/api/axis/Portal_UserService")); 

//  makes no difference if these are commented or uncommented  
//  ((Portal_UserServiceSoapBindingStub)userSoap).setUsername(Constants.LIFERAY_USERNAME); 
//  ((Portal_UserServiceSoapBindingStub)userSoap).setPassword(Constants.LIFERAY_PASSWORD); 

     return userSoap; 
    } 
... 

私はこのテーマで見つけるLiferayのフォーラムの投稿のすべては、そのほとんどが、Tomcatのバンドルに適用され、有益な何かをもたらしていません。 Glassfish固有の問題である可能性はありますか? 私は数週間、この問題を解き放つことに苦労してきましたが、アイデアはまったくありません。 Liferayサービスを利用するためのアドバイス、ヘルプ、リンク、チュートリアルなどがあれば、とても感謝しています。

おかげ

答えて

0

私はLiferayのデータベースをドロップして再作成することによって、これを修正しました。

「lportal」データベースに何かが詰まっている必要があります。私はデータベースを削除し、私のportal-setup-wizard.properties & portal-ext.propertiesファイルを削除しました。サーバーを再起動してセットアップウィザードを完了したら、私はJunitテストとIT WORKEDを再試行しました!コードの変更や何の変更もなく、データベースのワイプと再作成が可能です。だからイライラする!

明らかに、これは理想的な解決策ではありません。非常に私が生産に入るとLiferayがどのように動作するかについて神経質になります。

1
+0

Jader、 ありがとうございました。私はあなたが提供したブログ記事を見ました(翻訳のために!)。私はそこにあるテクニックは、私がやろうとしていることに本当には当てはまらないと思う。私は別のシステム上の外部アプリケーションがLiferayサービスを消費するようにしたい、具体的には、私たちの提案システムがLiferayでユーザーを作成できるようにしたい。 Liferayは何も消費する必要はありません。 まだ私は私のオリジナルの質問が十分にはっきりしていなかったので、+1します。 – CatsAndCode

関連する問題