申し訳ありませんが、私はこの EJB、JSF、および JAX-RS のすべてを始めたばかりで、今すぐあなたの助けが必要です。非常にうまく機能し、@GET、@PUT などを実装する JAX-RS リソース クラスを作成しました。
同じプロジェクトで、BackBean に応じた JSF ページを作成しました。この Backbean は REST インターフェイスと通信する必要があります。テスト中に、REST インターフェースの URI を Bean にハードコーディングしましたが、もちろんプログラムで URI を取得したいと考えています。@Produces メソッドとインジェクションを試してみましたが、常に IllegalStateException が発生します。これは文脈に関係していると思いますが、実際にはそれを解決するための理解がありません。
私のRESTリソース:
@Path("task")
@ManagedBean
@RequestScoped
public class TaskResource {
@Context
private UriInfo context;
@Inject TaskLifecycle lc;
public TaskResource() {
}
@GET
@Path("{id}")
public Response getTask(@PathParam("id") String id) { ... etc.
私のバックビーン:
@ApplicationScoped
@LocalBean
@Named("tmmlWrapper")
public class TmmlTaskWrapperBean implements Serializable {
// Here another ManagedBean is injected, which works fine!
@Inject TaskLifecycle lc;
そして最後に私のJSFページ:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Tasklist</title>
</h:head>
<h:body>
<h:form>
<h:outputLabel ><h3>Tasklist:</h3></h:outputLabel>
<h:dataTable value="#{tmmlWrapper.taskList}" var="tl">
<h:column>
<f:facet name="header">ID</f:facet>
#{tl.id}
</h:column> ... and so on ... etc.
私の質問: BackBean はどうすれば REST リソースの URI を取得できますか (例: "http://exampledomain:8080/as")? どんな助けでも大歓迎です!
乾杯、ジョーン