たちまち。

即席で役に立つこと。

CompileClassNotFound エラー: クラス~が重複しています

f:id:aposke:20210202164035p:plain

Javaファイルを配置し、Resin起動時以下のようなメッセージが表示された。

{main} com.caucho.java.CompileClassNotFound: /usr/local/resin/(パス省略):47: エラー: クラスsample.LogicClassが重複しています

原因

この事象は文字通り、クラスが重複している。つまり、同じクラスを定義しているファイルが複数存在している可能性が高い。

解決方法

今回の事例では、同じJavaファイルを別の階層にも配置してしまっており、このエラーが発生した。

余計に配置してしまったJavaファイルを削除することで、解決。

Resin用のエラーログなので中々一般的な情報がなくハマりかけたが、気を付けよう。

Dynamics365 TeamMemberでアクセスすると「このロールで使用できるアプリが見つかりません」

以前の記事でも同じようなことを書きましたが。

www.tachi-machi.net

今回はこれとは別で、2020 wave1の影響により、2021/02/01からアクセスできなくなるという事象。

以下、Microsoftのページから抜粋。

注意

2018 年 10 月以降に購入した既存の Team Members ライセンスを持つユーザーは、この指定されたアプリ セットに制限されるため、当該ユーザーは顧客サービス ハブ、営業ハブ、カスタム アプリをご利用いただけなくなります。

新しい Dynamics 365 Team Members ライセンスの早期アクセス フェーズでは、新しいライセンスを持つユーザーは、指定された Team Members アプリに加えて、既存のすべてのアプリをご利用いただけるようになります。 ただし、2020 年リリース ウェーブ 1 ビルドでライセンス適用が有効になると、当該ユーザーは顧客サービス ハブ、営業ハブ、カスタム アプリなど、使用を許可されていないアプリをご利用いただけなくなります。 Team Members シナリオをテストし、必要に応じてすべてのカスタマイズ内容を指定されたアプリに移行することをお勧めします。

スムーズな移行を支援するため、2020 年 4 月 1 日以前に作成したすべての顧客組織インスタンスは、2021 年 1 月 31 日までの猶予期間を追加で付与されます。

docs.microsoft.com

簡単に言えば、「今までのアプリ使えなくなるからTeamMemberアプリ使ってね」ということである。

管理者アカウントでアプリ一覧を見ると、なるほどTeamMemberアプリらしきものが存在している。

f:id:aposke:20210201163158p:plain

このアプリの「…」>「ロールの管理」を設定すると、TeamMemberユーザからアクセス可能となった。

あとは、アプリデザイナーを開いてサイトマップを整備してやれば…

って、ここはどうもインポートがなくて手動のようなのだけど。

エンティティ多くなければそんなにかからないと思うので、がんばろう。

以上で対応が完了した。

XrmToolBoxでDynamics365(オンプレミス)に接続ができない

f:id:aposke:20210122173409j:plain

XrmToolBoxでオンプレミスのDynamics365に接続しようとすると、以下のエラーが発生する。

Unable to login to Dynamics CRM, Error was : セキュリティで保護されていないか正しくセキュリティで保護されていないフォールトを相手側から受信しました。フォールト コードおよび詳細については、内部の FaultException を参照してください。

この場合、Dynamicsのサーバとは通信できているのだが、何らかの問題でログインが拒否されている。

原因

以下について見直してみるとよい。

1.認証のID/PWが間違っていないか

2.XrmToolBoxのバージョンがDynamicsのバージョンと合っているか

3.クライアントとサーバの時刻がずれていないか

対応方法

XrmToolBoxの過去バージョンについては、以下のGithubから入手できる。

利用中のDynamicバージョンに最も近いリリース日のバージョンを採用するとよいだろう。

github.com

時刻については確認し、ずれていたら手動で直そう。

グループポリシーでNTPサーバによる時刻同期が行われているかどうかもチェック。

Hyper-VなどVMの場合、VM側の機能で時刻同期されている場合もあるので、注意されたし。

WindowsUpdate エラーコード0x800f0831の解決方法

f:id:aposke:20210120125106p:plain

エラーの意味

まず、このエラーの意味は以下のいずれかである模様。

・前提条件となるモジュールが足りていないので失敗する

・WindowsUpdateにうまくアクセスできない

大抵は前者が原因となるだろう。では、足りていない前提条件となるモジュールとは何か? それはログを見て調べることとなる。

ログの場所

CBS.logを確認する。以下の場所に存在している。

C:\Windows\Logs\CBS

ここにCBS.logが出力されているので確認する。

何度かWindowsUpdateを実行している場合は、CbsPersistほにゃららという過去のログになってる可能性もあるので注意。

不足モジュールを特定する

ログを開いたら、「CBS_E_STORE_CORRUPTION」で検索する。

「Store corruption, manifest missing for package: ほにゃらら~」といった文言の箇所が見えるだろう。

ここに記載されているのが不足ているモジュールである。KB番号があれば、それを控える。なければ、最下部の手順へ。

カタログサイトからダウンロードしてインストール

Microsoft Update カタログにアクセスする。

https://www.catalog.update.microsoft.com/

先ほどのKB番号を入れて検索。

ヒットしたモジュールのうち、環境にあったものを選択してダウンロードし、インストール。

インストール後、再度Windows Updateを行って通ることを願おう。

CBS.logにKB番号がない場合

CBS.logにKB番号がなくモジュール名の場合もある。

私の今回のケースでは「Microsoft-Windows-DirectoryServices-ADAM-Client-Package」が表示されていた。

このようになってくると中々解決が難しく、dismツールによるリカバリが必要な事になるようだ。

この時に必要なものは、OSのインストールディスク。

インストールディスクを用意した上で、管理者権限のコマンドプロンプトにて次を実行する。

Dism /Online /Cleanup-Image /RestoreHealth /Source:E:\sources\sxs /limitaccess

※Eドライブにインストールディスクが入っている想定

これでもうまくいかない場合は、中々文献がないので、OSのアップデートをかけてしまうなど、諦めて入れ替えてしまうような策を講じた方が早いかもしれない。

SQLServer2016のSSRSでrdlファイルがアップロードできない

f:id:aposke:20210120175443j:plain

SQLServer2016のSSRSでrdlファイルをアップロードするため、次のURLにアクセスする。

http://サーバアドレス/reports

ここからフォルダを掘ってrdlファイルをアップロードするのだが、アップロードボタンからファイルを選択してもウンともスンとも言わない。

原因

InternetExplorerでは動かない('ω')

対応策

Chrome等の別のブラウザをインストールして使う。

もしくは外部からChrome等のブラウザでアクセスすることで解決。

特に管理者実行とかはしなくてもいいみたい。

IM-Noticeでバーチャルテナント&複数ベースURLに対応する方法

環境

・AccelPlatform 2020 Summer Advanced

・バーチャルテナントで2つのテナントを運用している

テナント解決機能を用いて、各テナントには別々のURLで接続している

発生している問題

IM-Noticeの通知をクリックして画面遷移を行う際、

URL(ベースURL)が固定となってしまい、片方のテナントで正しく遷移できない。

原因

im-notice-config.xmlでベースURLを指定しているため。

解決

im-notice-config.xmlの<base-url>を空にする。

つまり、以下。

<base-url></base-url>

当初はserver-context-config.xmlのように、im-notice-config.xmlの<base-url>タグそのものをコメントアウトしていたのだが、

その場合はbase-urlが未定義のエラーが出てしまい、ハマった…

【AccelPlatform】システム管理者画面だけ静的ファイル(js等)が読み込めない

WebサーバにIISを使用した環境において、システム管理者画面(system/login)にアクセスすると、画像などが読み込めずに崩れている。

こんな感じ。

f:id:aposke:20210114154918p:plain

こういう場合、静的ファイルが配置できてないとか、設定の向き先が間違えていることが多いのだが、一般ユーザ(/login)の画面については問題ないしログインもできる。

静的ファイルがなぜ読み込めてないかというと、Chromeの開発者ツールで確認する限り、ポート番号8080のアドレスにある静的ファイルを見に行こうとしている。

つまり、IISにて静的ファイルを関連付けるルールよりも先に、Resin(8080)へURL書き換えするルールが優先されてしまっている。

しかし、一般ユーザはログインできるわけだから設定に誤りがあるわけではない。imart/loginと、imart/system/loginで何かが異なるのか。

久しぶりにハマった。原因は何なのか。

解決方法

原因はベースURLにあった。

server-context-config.xmlのベースURLがコメントアウトされていたが、指定することで正常に画面表示された。

システム管理画面についてはserver-context-config.xmlにあるベースURLを見る仕様のようで、これを定義していないとURLが正しいものにならないようだ。

今回はバーチャルテナント環境で2つテナントを構築しており、ベースURLはテナント毎に設定していたからserver-context-config.xmlは未指定で大丈夫と思ったものの、システム管理者画面については影響があるので注意されたし。