我有一些Wicket页面,如下所示:
(HomePage.html)
<html>
<head>
<title>Front</title>
<link wicket:id="applicationCss" rel="stylesheet" type="text/css"
href="stylesheets/application.css"/>
</head>
<body>
<!-- Content unnecessary -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
(HomePage.java)
public class HomePage extends AbstractWebPage {
public HomePage() {
// Nothing necessary (real application initialises some other links here.)
}
}
Run Code Online (Sandbox Code Playgroud)
(AbstractWebPage.java)
public abstract class AbstractWebPage extends WebPage {
protected AbstractWebPage() {
setStatelessHint(true);
// *** the trouble-maker:
add(new ResourceLink<>(
"applicationCss",
new CssResourceReference(AbstractWebPage.class,
"stylesheets/application.css")));
}
}
Run Code Online (Sandbox Code Playgroud)
当我访问我的主页时/admin,浏览器会立即重定向到/admin?0,表明该页面不是无状态的.但是,我唯一添加的是一个链接,据我所知,通过阅读代码,它不是有状态的.
当然,如果我删除<link>HTML 中的标记和AbstractWebPage中的add()语句,页面将返回无状态.
我究竟做错了什么?理想情况下,我希望用户看到的任何URL都是无状态的,但只要在所有页面上都包含样式表,突然之间所有无状态页面都是有状态的,没有明显的原因.
我听说网络应用程序应尽可能无状态.但在我看来,经常很难意识到这一点.例如,如果我:
如果结果有点复杂,那么只是一个可以作为参数传递的字符串(或者我不希望通过URL包含该信息),那么我就无法将2和3结合起来.
我能想到的唯一解决方案是将信息保存为Java程序中的状态.
但这会破坏状态网络应用程序的规则,不是吗?
我试图使我的项目的页面完全无状态(更多页面来)和通过去除页面版本号,例如 /mypage/?0
该页面设置statelessHint为true,我也验证了onBeforeRender该isStateless返回true.我还使用@StatelessComponent注释来确保页面及其子组件确实非常无状态.
因此,似乎所有内容都是无状态的,但版本参数仍然附加到URL
我无法附加代码,因为它是一个庞大的构造,包含许多组件和大量的继承.当然,我不希望有人告诉我哪里有问题,而是希望有些人能给我一个暗示何时在Wicket的来源中设置一个断点以找出问题所在.例如,任何人都可以告诉我哪个Wicket类负责决定是否附加版本参数?
彼得,先谢谢你
我有一个EJB无状态Bean,由Websphere内的Scheduler自动执行.我的EJB安装在Websphere中.在我的EJB内部,我想向其他应用程序公开的Web服务发出http请求(在同一个服务器内部).我尝试使用相对路径,因为这是我通常在应用程序之间发出请求的方式,但在我的bean中我不知道如何获取主机名和端口来构建URL.
我设法通过这样做得到主机(IP):
InetAddress.getLocalHost().toString();
Run Code Online (Sandbox Code Playgroud)
但我也需要端口号.问题是:如何获取安装EJB应用程序的应用程序服务器(Websphere)的主机和端口号?这可能吗?
这段代码是我尝试发出请求的方式,但这不起作用,因为我需要完整的路径:
URL url = new URL("/MyOtherAppName/myservice");
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length",
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoOutput(true);
Run Code Online (Sandbox Code Playgroud)
- 编辑1 ----
我认为用户Gas的方法很好,并且使我的应用程序更容易配置.
我按照本指南实现了URL Provider方法:
I have this code
data Slist a = Empty | Scons (Sexp a) (Slist a)
data Sexp a = AnAtom a | AnSlist (Slist a)
data Fruit = Peach | Apple | Pear | Lemon | Fig deriving (Show,Eq)
sxOccurs oatm sxp =
let slOC Empty = 0
slOC (Scons se sls) = (seOC se) + (slOC sls)
seOC (AnAtom atm) = if (atm == oatm) then 1 else 0
seOC (AnSlist sla) = slOC sla
in seOC sxp
Run Code Online (Sandbox Code Playgroud)
As …
我不认为'静止'是一个词,但它会做:)
我正在尝试为REST服务(PHP)创建身份验证.我正在努力使服务尽可能无国籍.我在这里阅读(提示#4)你不应该使用$ _SESSION这是有道理的,但它建议使用cookie作为替代.我可能误解了"无国籍"是什么,但我看不出饼干是如何被接受的,我认为令牌是要走的路.
谁能解释一个cookie在无状态休息应用程序和会话中是否可以接受?
我很擅长在企业应用程序中使用ORM工具.我们正在构建一个使用JPA 2.0和EE6的可扩展应用程序.我正在尝试找到一个很好的模式来构建我的应用程序,但我找不到一种方法来保持我的实体同步(我想集合访问实体的bean).
一个例子:
我有一个小组:
@Entity
public class Group implements Serializable
{
@Id
private Long id;
@OneToMany
private List<MyUser> myUsers;
public Group()
{
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public void addUser(MyUser u)
{
myUsers.add(u);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个用户
@Entity
public class MyUser implements Serializable
{
@Id
private Long id;
public MyUser()
{
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
} …Run Code Online (Sandbox Code Playgroud)