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]}
です。この応答は有効であり、かつ
を初期化されていません。 SOAP要求をsoapUIまたはJUnitコードで実行しているかどうかにかかわらず、私は同じ応答を得ます。java.rmi.RemoteExceptionを取得:PermissionCheckerが実際に存在するユーザーのために
私は適切なエントリ持っている私の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サービスを利用するためのアドバイス、ヘルプ、リンク、チュートリアルなどがあれば、とても感謝しています。
おかげ
Jader、 ありがとうございました。私はあなたが提供したブログ記事を見ました(翻訳のために!)。私はそこにあるテクニックは、私がやろうとしていることに本当には当てはまらないと思う。私は別のシステム上の外部アプリケーションがLiferayサービスを消費するようにしたい、具体的には、私たちの提案システムがLiferayでユーザーを作成できるようにしたい。 Liferayは何も消費する必要はありません。 まだ私は私のオリジナルの質問が十分にはっきりしていなかったので、+1します。 – CatsAndCode